2013-03-14 2 views
0

을 예약하지 않는 장면을 실행하는 나는이 게임을 시작 않습니다적인 Cocos2D - 두 번째는 UIKit의 ViewController에서 업데이트를

+(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; 
} 

처음 :

if (director.runningScene == nil) 
    { 
     [director runWithScene:[MyGameLayer scene]]; 
    } 
    [director startAnimation]; 

MyGameLayer은 다음과 같습니다를 나는 게임을하고 모든 것이 잘 작동한다. -(void) update: (ccTime) dt이 호출됩니다. 내가 게임을 종료 할이 경우

CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector]; 
    [director stopAnimation]; 
    [director end]; 

을 그리고 다시 게임을, -(void) update: (ccTime) dt은 내가 -init() 호출지고 알면서도, 전화를받을 수 없습니다. 게임이 화면에 나타나지만 업데이트 일정이 두 번째로 작동하지 않습니다. Cocos2d가 업데이트를 예약하지 못하게하고 어떻게 수정합니까?

답변

0

마지막으로 알아 냈습니다. 종료 버튼이 게임에서 메뉴를 열 때, 나는이 같은 게임을 일시 중지했다 : 나는 새로운 게임을 시작하는 것입니다 그래서

[[self gameLayer] pause]; 

를,적인 Cocos2D는 여전히 장면 및 레이어가 할당 해제되었다하더라도, 일시 중지 나는 새로운 glView를 만들고 있었다. 나는이를 사용하는 경우

그것은 작동 :

[[self gameLayer] pauseSchedulerAndActions]; 
0

onEnter*/onExit* 방법 중 하나를 재정의 (구현) 했습니까? 그렇다면 수퍼 구현을 호출해야합니다. 그렇지 않으면 예약 및 터치 입력이 작동하지 않을 수 있습니다.

업데이트 : 그 호출하지 [감독의 말]에 비해 다른 완전히 문제가있는 것으로 알려진적인 Cocos2D를 종료하기 때문이다.

+0

아니요, 나는 그것을하지 않았습니다. – soleil

+0

좋습니다. 다른 제안을 추가했습니다. 업데이트 – LearnCocos2D

+0

을 참조하십시오. [디렉터 종료]를 호출하지 않으면 게임을 시작한 후 분홍색 화면이 나타납니다. 끝없는 openGL 오류 스트림 : OpenGL 오류 0x0501 in - [CCSprite draw] 532 – soleil

0

배경에서 작업 할 때 감독이 4fps로 업데이트하지 못하도록하고 있다고 가정하면 감독을 다시 시작해야합니다.

말했다되는 것을 당신의 applicationDidBecomeActive에 다음 코드

[[CCDirector sharedDirector] stopAnimation]; // call this to make sure you don't start a second display link! 
[[CCDirector sharedDirector] resume]; 
[[CCDirector sharedDirector] startAnimation]; 
를 추가 에서 촬영

: 내가 잘못 생각하는 경우 How to implement pause/resume in cocos2d game?

날 당신이 당신의 감독으로 뭘 하려는지 알려 주시기 바랍니다는

를 호출
+0

여러 개의 미니 게임 중에서 선택할 수있는보기 컨트롤러가 있습니다. 그래서 한 게임을 종료하고 다른 게임을 시작할 수 있어야합니다.문제는 업데이트 스케줄러가 내가 플레이하는 첫 번째 게임에서만 작동한다는 것입니다. 동일한 게임이나 다른 게임의 후속 연극에서 애니메이션이 발생하지 않습니다. – soleil

0

것은이 코드를 사용하여 게임을 '일시 정지'하는 경우 :

[[CCDirector sharedDirector]pause]; 

또한 다시 시작에 이사 '이력서'로하거나 어떤 장면을 밀기 전에 메뉴 코드 블록 :

[[CCDirector sharedDirector]resume];