2012-02-27 10 views
0

私はcocos2dに関連するとは思えない問題がありますが、私はココスを使います。別のクラスのシーンを置き換える

私たちのアプリには、relpaceScene -cocos2dメソッドで置き換えることができるシーンがいくつかあります。

今、ビューではなく、それ以外は何もしません。通知センターから通知を受けて、画面上の現在のシーンを置き換えます。

シーンを置き換えるとそのシーンのNSLogが呼び出されますが、そのシーンのスプライトはすべて表示されず、白い画面が表示されます。

このクラスがどのようにリリースされたか、何か、または私はこのクラスのシーンを何らかの理由で置き換えることができないようです。

この問題は非常に奇妙であり、あなたには何か手掛かりがあることを願っています。 (他のシーンからではなく、そのクラスから動作します)と呼ばれて

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

クラスと慰め、しかし[self addChild:sprite];が起きていない。

シーンを交換するためのコード。あなたの問題はあなたが使用しているコードの行BYTここで私が直接見ることはできません

答えて

0

./

おかげで、それ自体では珍しいです:

は、私が与える例の線に沿って何かを試してみてください。あなたの問題は

replaceScene: 

方法の間違った使い方であること、それはそう

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

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

あなたが言っていることは論理だと思います。なぜなら私は新しいシーンを保存するからです。しかし、あなたがsceneAにいてシーンBに移動したいのであれば、割り付けとインスタンスのことをやってはいけません。それはそれを処理します。私はそれについて確信しています。なぜなら、私はそれを使ってシーン間の遷移を行うからです。問題は、シーンではない別のクラスからこれを使用すると、なぜ機能しないのかです。 – Curnelious

+0

cocos2dでは、あなたはそれに移行する前に、割り当てられインスタンス化されたシーンを持っていなければなりません。それ以外の場合、CCDirectorはどのメモリにアクセスしてCCSceneとして扱うかをどのように知っていますか?あなたが投稿したコードが動作していると主張した場合、私はどのように理解できません。 –

0

(あなたはそれに応じて、あなたのケースに合わせてそれを変更する必要があります)。このメソッドでCCSceneオブジェクトを引数として渡す必要があります。しかし、あなたはあなたの結果をそこに渡します。

setBackgroundSprite:withType: 

メソッドです。そして、私は何も返さないと思う。

+0

最初に、ITが新しいシーンを開き、それを記録する(私が言ったように)、2番目に、この正確な線を使ったときに、現在は1つの画面であるシーンから、素晴らしい結果が得られます。シーンAからBへの移行は動作しますが、クラスからBへの移行はそうしないので、必要なものを戻しているようです。何か案が? – Curnelious

+0

はあなたのsetBackgroundSpriteを投稿:withType:メソッドのコード、 – Morion

0

あなたの質問をお読みください。私はあなたが何をしたいかはかなり分かっていません。しかし、あなたは一つのことを試すことができます。通知の場合、一般的にシーン/レイヤークラスに実装されたデリゲートメソッドがあります。そのクラスから呼び出すのではなく..メソッドシーン/レイヤークラス内で...または

[[[CCDirector sharedDirector] runningScene] callMethodToReplaceScene]; 

などのメソッドを呼び出すことができます。このメソッドでは、通常、このようにreplaceSceneを使用します。

+0

私はあなただけ言って、私はcallMethodToReplaceSceneを作成していなかったしてくださいと、それはCCSceneがcallMethodToReplaceSceneに応答しないことがありますあなたのライン上の警告を私に与え、その理由は何ですか?私はその方法を持っています。この全部がひどいので、この方法を最初に宣言しなければならないという警告を避けるために、ここで間違っていると理解したいと思っています。 – Curnelious

+0

またはそれはこの警告は、単純なキャストを追加することによって除去することができる – Morion

+0

それを呼び出す、法の前に実施されなければならない。..のような '[(YourScene *)[[CCDirector sharedDirector] runningScene] callMethodToReplaceScene];' このYourSceneは名前でありますあなたのメソッドを持っているクラスの..ちょうどそれがうまく動作するかどうかを確認する.. :) –

関連する問題