2012-02-27 2 views
0

나는 cocos2d와 관련해서는 의심 스럽지만 문제는 코코스를 사용하고 있습니다.다른 클래스의 장면 바꾸기

우리의 응용 프로그램에는 relpaceScene -cocos2d 메소드로 대체 할 수있는 장면이 있습니다.

이제는보기가 아닌 새로운 클래스가 있습니다. 알림 센터에서 알림을 받고 화면의 현재 장면을 바꿉니다.

내가 장면을 대체하면 해당 장면의 NSLog가 호출되지만 장면의 모든 스프라이트는 표시되지 않고 흰색 화면이 표시됩니다.

이 클래스가 어떻게 릴리스되는지 또는 무엇인가, 또는 어떤 이유에서이 클래스의 장면을 대체 할 수없는 것으로 보입니다.

이 문제는 매우 이상하고 당신은 어떤 단서가 있기를 바랍니다.

[[CCDirector sharedDirector] replaceScene:[[BasicSceneWithCat scene] setBackgroundSprite:[CCSprite spriteWithFile:@"bedroom&cat_bg.png"] withType:@"bedroom"]]; 

클래스와 기름 부음이 호출되는 (하지만 그 클래스에서 다른 장면에서 작동),하지만 [self addChild:sprite];이 발생되지 않습니다

코드는 장면을 대체한다.

감사 ./

답변

0

문제는 그 자체가 드문 사용하는 코드 줄 BYT 어디를 직접 볼 수 없습니다 :

것은 내가주는 예제의 라인을 따라 뭔가를보십시오. 문제가

replaceScene: 

방법의 잘못된 사용에 있는지, 그것은 보인다

BasicSceneWithCat *scene = [BasicSceneWithCat scene]; 
[scene setBackgroundSprite:[CCSprite spriteWithFile:@"bedroom&cat_bg.png"]]; 
[scene setType:@"bedroom"]; 

[[CCDirection sharedDirector] replaceScene:scene]; 
+0

덕분에, 당신이 말하는 논리는 논리로 보입니다. 왜냐하면 새로운 장면을 저장하기 때문입니다.하지만 sceneA에 있으면 장면 c로 이동해야합니다. 장면 B로 이동하려는 경우 할당 및 인스턴스 작업을 수행하지 않아도됩니다. 그것은 그것을 처리합니다. 나는 그것으로 장면 사이의 전환을하기 때문에 그것에 대해 확신합니다. 질문은 왜 장면이 아닌 다른 클래스에서 이것을 사용할 때 작동하지 않는지입니다. – Curnelious

+0

cocos2d에서는 전환하기 전에 반드시 할당되고 인스턴스화 된 장면이 있어야합니다. 그렇지 않으면 CCDirector가 CCScene으로 액세스하고 처리 할 메모리의 종류를 어떻게 알 수 있습니까? 게시 한 코드가 작동한다고 주장하면 어떻게 작동하는지 이해할 수 없습니다. –

0

(당신은 따라서 귀하의 경우에 맞게 변경해야합니다). 이 메소드에서 CCScene 객체를 인수로 전달해야합니다. 그러나 당신은 당신의 결과를 거기에 전달합니다.

setBackgroundSprite:withType: 

방법입니다. 그리고 나는 아무것도 반환하지 않는다고 생각합니다.

+0

첫 번째, IT가 새로운 장면을 열어서 (내가 말했듯이) 두 번째로 기록하기 때문에 반환합니다.이 정확한 줄을 정확히 사용하면 현재 한 화면에있는 장면에서 효과가 있습니다. 그래서 sceneA에서 B 로의 전환은 작동하지만 B에서 B 로의 전환은 필요하지 않기 때문에 필요한 것으로 되돌아가는 것으로 보입니다. 어떤 생각? – Curnelious

+0

setBackgroundSprite : withType : method code를 게시하십시오. – Morion

0

질문을 읽으십시오. 나는 당신이 뭘하고 싶은지 잘 모르겠다.하지만 한 가지를 시도해 볼 수있다. 일반적으로 알림의 경우 장면/레이어 클래스에 구현 된 위임 메서드가있다. 대신 해당 클래스에서 호출하는 대신 메서드 호출을 시도한다. 장면/계층 클래스에서 ... 아니면 ... 클래스 등으로부터 메소드를 호출 할 수 있습니다

[[[CCDirector sharedDirector] runningScene] callMethodToReplaceScene]; 

와 당신이 일반적으로이 방법 replaceScene에서

.

+0

방금 ​​전에 말한대로했는데, callMethodToReplaceScene을 만들었고, CCScene이 callMethodToReplaceScene에 응답하지 않을 수도 있다는 경고 메시지를 보냈습니다. 그 이유는 무엇입니까? 나는 그 방법을 가지고있다. 이 모든 일은 너무 힘들고, 나는 정말로이 방법을 먼저 선언해야한다는 경고를 피하기 위해 여기서 원하지 않는 것을 이해하고 싶습니다. – Curnelious

+0

. 거나 같은 .. 즉 – Morion

+0

이 경고 간단한 모형을 추가함으로써 제거 될 수 그것을 호출 방법 전에 구현되어야 '[(YourScene *)는 [CCDirector sharedDirector] runningScene] callMethodToReplaceScene]'는 이 YourScene는 이름 귀하의 방법을 가지고 클래스의 .. 그냥 잘 작동하는지 확인 .. .. :) –