2012-04-02 12 views
0

Ich habe eine kleine App, die sowohl CCLayer anzeigen und UIView hat. Das funktioniert gut. Ich versuche einfach, eine Nachricht an eine Referenz der Schicht zu senden, damit der Cocos2d CCLayer die Nachricht empfangen kann. Das scheint einfach und ich denke, sollte funktionieren. Ich habe einen CCLayer Zeiger „cocos“ als iVar genannt und sie als dies nach der cocos Ansicht erstellen:Zeiger auf CCLayer von UIView

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

CCScene*tempscene=[[CCDirector sharedDirector] runningScene]; 
cocos=[tempscene.children objectAtIndex:0]; 

Da dies ein einfaches kleines Test-App mit nur einer Szene und die Schicht ist, sollte es funktionieren. Aber die iVar cocos reagiert auf keine der öffentlichen Methoden in HelloWorldLayer. Irgendeine Idee warum?

UPDATE: Ich habe es funktioniert, indem Sie einfach den Code ein wenig neu ordnen. Nicht sicher, warum es auf diese Weise gearbeitet und nicht die Art und Weise vor:

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


cocos=[tempscene.children objectAtIndex:0]; 

Antwort

0

Der Grund, dass das erste Bit-Code nicht funktioniert für Sie ist, dass runWithScene: nicht sofort stellen Sie die runningScene Eigenschaft CCDirector-[HelloWorldLayer scene].

+0

eine Idee * wenn * 'runningscene' verfügbar wird? – johnbakers

+0

Ich glaube, sobald Sie runWithScene aufgerufen haben, wird runningScene aktiv, denn solange und bis Sie wirklich eine Szene starten, ist keine Szene als laufende Szene verfügbar. –

+0

ich rief es nach runWithScene, wie in meinem Code erwähnt, aber anscheinend runningscene noch nichts – johnbakers