Cocos2d iphone 从UIView指向CCLayer的指针

Cocos2d iphone 从UIView指向CCLayer的指针,cocos2d-iphone,Cocos2d Iphone,我有一个小应用程序,既有CCLayer视图,也有UIView。那很好。我只是尝试向层的引用发送消息,以便Cocos2d CCLayer可以接收消息。这看起来很简单,我认为应该行得通。我创建了一个名为“cocos”的CCLayer指针作为iVar,并在创建cocos视图后将其设置为: [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]]; CCScene*tempscene=[[CCDirector sharedD

我有一个小应用程序,既有CCLayer视图,也有UIView。那很好。我只是尝试向层的引用发送消息,以便Cocos2d CCLayer可以接收消息。这看起来很简单,我认为应该行得通。我创建了一个名为“cocos”的CCLayer指针作为iVar,并在创建cocos视图后将其设置为:

[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];

CCScene*tempscene=[[CCDirector sharedDirector] runningScene];
cocos=[tempscene.children objectAtIndex:0];
由于这是一个简单的小测试应用程序,只有一个场景和层,它应该可以工作。但是iVar
cocos
不响应
HelloWorldLayer
中的任何公共方法。知道为什么吗

更新:我通过简单地重新安排代码来实现它。不知道为什么它是这样工作的,而不是以前的方式:

  CCScene*tempscene=[HelloWorldLayer scene];
[[CCDirector sharedDirector] runWithScene: tempscene];


cocos=[tempscene.children objectAtIndex:0];

第一段代码对您不起作用的原因是
runWithScene:
没有立即将
CCDirector
runningScene
属性设置为
[HelloWorldLayer scene]

知道
runningScene
何时可用吗?我想一旦您调用runWithScene,在runningScene激活之后,因为除非真正启动场景,否则没有场景可用作runningScene。正如我的代码中所述,我确实在runWithScene之后调用了它,但显然runningScene仍然如此nothing@andrewx我不熟悉Cocos2D回答这个问题的任务循环。我在源代码中跟踪了
runWithScene:
,但只能发现它将
nextScene
实例变量设置为您的
[HelloWorldLayer场景]
。因此,我只能得出结论,在不同的任务中,
runningScene
被设置为
nextScene
。我的意思是,它发生在包含代码的函数从堆栈中移除之后。通过对代码顺序进行实验,您所注意到的情况验证了这一点。