【问题标题】:Cocos2d - removeChild by locationCocos2d - 按位置删除Child
【发布时间】:2013-09-20 14:10:26
【问题描述】:

我在屏幕上的 CCSprites 上有一个数字,上面放置了 CCNodes,并作为子节点添加。如何根据触摸位置(或触摸精灵位置)移除 CCNode 子节点?

我已尝试创建自定义方法(见下文),但不确定如何填写。

 -(void)removeChild:(CCNode*)node location:(CGPoint)location cleanup:(BOOL)cleanup;

是否可以使用内置方法指定位置?

[self removeChild:(CCNode *)[node at location] cleanup:(BOOL)cleanup]

【问题讨论】:

    标签: cocos2d-iphone removechild


    【解决方案1】:

    您可以通过发送boundingBox 消息来获取您的精灵的本地矩形。然后只需使用CGRectContainsPoint 功能测试您的触摸位置。你唯一应该记住的是,你需要转换你的坐标(例如,如果你的精灵是某个节点的子节点,那么它们的矩形将相对于它的 (0.f, 0.f) 坐标,而不是场景( 0.f,0.f))。此外,您应该通过将convertToGL: 消息发送到CCDirector 共享实例来转换您的触摸位置。

    【讨论】:

    • 感谢 Morion 提供的信息。我目前有一个 CCSprite “_selectedSprite”,它代表被触摸的精灵,使用与您提到的类似的设置。不幸的是,我无法根据该位置删除一个孩子。为了解决我的问题,我所做的是使用内置的“removeChildByTag”函数,并标记了构建在精灵上的所有节点。我必须手动声明每个创建的精灵,但这个过程有效。
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多