我正在使用v99.0
当我的精灵添加到图层并显示图层的场景时,未调用onEnter。精灵正确显示,但未调用onenter。
有趣的是,我与其他精灵完全一样,他们的onenter方法被称为罚款。这是一个错误吗?
在app delegate:
[[CCDirector sharedDirector] runWithScene: [TilesView scene]];
在TilesView的init方法(它是CClayer的子类)中:
CCSpriteTouch * backArrow = [CCSprite spriteWithFile:@“back arrow.png”]; [self addChild:backArrow];
注意:在同一个init方法中,我创建了其他sprite,这会导致调用它们的onEnter方法:
TileSprite *tile = [TileSprite spriteWithFile:@"singleTile.png"];
[self addChild:tile];
两个精灵类的代码是相同的。
答案 0 :(得分:2)
我发现了它......抱歉,这是一个愚蠢的错误。我已经将CCSprite子类化用于触摸,但是当我创建类的实例时,我使用CCSprite而不是我的自定义类:
CCSpriteTouch *backArrow = [CCSprite spriteWithFile:@"back arrow.png"];
所以 CCSprite 的onenter方法被调用,而不是 CCSpriteTouch 。
答案 1 :(得分:0)
在你的TilesView
课程中你是否有一个超级onEnter的电话?即....
-(void)onEnter
{
... your custom code ...
[super onEnter];
}
我最近忘了用一些工作做这件事,并且与科科斯发生了混乱。您是否尝试通过某些Cocos代码来查看逻辑未能达到TilesView::onEnter
调用的位置?
如果您粘贴TilesView
类的声明,那么也可以帮助澄清事情。