从 UIKit ViewController 我这样做是为了开始游戏:
if (director.runningScene == nil)
{
[director runWithScene:[MyGameLayer scene]];
}
[director startAnimation];
MyGameLayer 看起来像这样:
+(id) scene {
CCScene *scene = [CCScene node];
MyGameLayer* layer = [MyGameLayer node];
[scene addChild:layer z:0 tag:GameSceneLayerTagGame];
return scene;
}
-(id) init {
if ((self=[super init]))
{
NSLog(@"init!");
self.isTouchEnabled = YES;
[self initPhysics];
[self scheduleUpdate];
}
return self;
}
我第一次玩游戏,一切正常。-(void) update: (ccTime) dt
被调用,因为它应该。如果我退出游戏并执行此操作:
CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector];
[director stopAnimation];
[director end];
然后再次玩游戏,-(void) update: (ccTime) dt
没有被调用,即使我知道-init()
正在被调用。游戏出现在屏幕上,但更新计划第二次不起作用。什么会导致 Cocos2d 不安排更新,我该如何解决?