从另一个类替换一个场景

时间:2012-02-27 17:02:06

标签: objective-c cocos2d-iphone

我有一个问题,我怀疑这与cocos2d有关,但我使用的是cocos。

我们的应用中有一些场景,我们可以用relpaceScene -cocos2d方法替换它们。

现在,还有另一个新类,这不是一个视图,除此之外别无其他:从通知中心获得通知,然后替换屏幕上的当前场景。

当我这样做时,替换场景,正在调用该场景的NSLog,但是,该场景中的所有精灵都没有显示,我看到一个白色的屏幕。

似乎有些人如何发布这个类,或者某些东西,或者由于某些原因我无法从这个类替换场景。

这个问题很奇怪,我希望你有任何线索。

替换场景的代码:(适用于其他场景,但不适用于该类)

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

调用类和函数,但[self addChild:sprite];不会发生。

谢谢./

3 个答案:

答案 0 :(得分:0)

我无法直接看到您的问题出在哪里,您使用的代码行本身就很不寻常:

尝试一下我给出的例子。 (您需要根据自己的情况更改它)

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

[[CCDirection sharedDirector] replaceScene:scene];

答案 1 :(得分:0)

看来,您的问题是

的错误用法
replaceScene: 

方法。您必须在此方法中传递CCScene对象作为参数。但是你传递了

的结果
setBackgroundSprite:withType: 

方法。我认为,它不会返回任何东西。

答案 2 :(得分:0)

请阅读您的问题。我不太确定你想做什么..但你可以尝试一件事......如果通知一般你有一个在场景/图层类中实现的委托方法。所以不要从该类调用..尝试调用方法在场景/图层类中...或者您可以从类中调用方法,如...

[[[CCDirector sharedDirector] runningScene] callMethodToReplaceScene];

并在此方法中正常替换theScene。