【发布时间】:2012-04-23 22:36:27
【问题描述】:
在我在另一个类中的方法声明中,我传递了一个 CCLayer 指针,其中添加了 sprite 以及一个 sprite 和 spritesheet 指针:
+(void) toggleSeedSelectionScreen:(CCLayer*)layer
withSeedSprite:(CCSprite*)seedSprite
withSeedSpriteSheet:(CCSpriteBatchNode*)seedSpriteSheet;
在我的 .m 中的 toggleSeedSelectionScreen 方法中,我添加了 spritesheet 和 sprite,如下所示:
[seedSpriteSheet addChild:seedSprite];
[layer addChild:seedSpriteSheet z:14];
这很好用。看起来很奇怪的是,当在我的 CCLayer(层)中调用一个方法来删除 seedSpriteSheet 时,什么也没有发生。
[self removeChild:seedSpriteSheet cleanup:YES];
当类方法曾经是层中的方法时,它工作得很好。有什么明显的原因吗?
似乎添加到图层后,在控制台中输入po seedSprite并不知道它是父对象。
【问题讨论】:
-
你试过设置断点并单步执行 cocos2d 库中的代码吗? (顺便说一句:这是开源库的众多光荣好处之一!)
-
"当类方法以前是层中的方法时,它工作得很好。??????"我无法理解这个......请详细说明.. 通常这个 self 表示您制作的图层类的对象.. 所以如果它是一个类方法。这个自我将代表你的班级。类不是精灵表的父级。你的类对象是父对象。
-
Nikhil:我的方法曾经与具有更新方法的主 CCLayer 属于同一类。现在,为了让我的主 CCLayer 中的内容看起来更干净,该方法现在位于不同的类中。
-
HachiEthan:我尝试了一点,但我会继续做侦探工作,谢谢。
-
我猜事情是 spriteSheet 被添加到某些东西,我只是不知道是什么,我不知道为什么它不应该是我指向 self 的 CCLayer在我的主要 CCLayer 类中。
标签: class methods cocos2d-iphone sprite