2012-04-23 5 views
0

でそれらを追加するとき、私はスプライトが追加されたCCLayerポインタと、スプライトとspritesheetポインタを渡す除去することに失敗:Cocos2D:スプライト代替クラスの私のメソッド宣言は、クラスメソッド

+(void) toggleSeedSelectionScreen:(CCLayer*)layer 
        withSeedSprite:(CCSprite*)seedSprite 
       withSeedSpriteSheet:(CCSpriteBatchNode*)seedSpriteSheet; 
toggleSeedSelectionScreen方法で私の.mで

は、私のようなspritesheetとスプライトを追加します。

[seedSpriteSheet addChild:seedSprite]; 
[layer addChild:seedSpriteSheet z:14]; 

これが正常に動作します。私のCCLayer(レイヤー)でメソッドが呼び出されてseedSpriteSheetが削除されると、何も起こりません。

[self removeChild:seedSpriteSheet cleanup:YES]; 

クラスメソッドがレイヤー内のメソッドであった場合、正常に機能しました。理由は何ですか?

レイヤーに追加された後、po seedSpriteと入力するとコンソールの親オブジェクトがわからないようです。

+0

あなたはまだブレークポイントを設定して、cocos2dライブラリのコードをステップしてみましたか? (別名:これは、ソースライブラリを開くための多くの栄光のメリットの1つです!) – MechEthan

+0

"クラスメソッドがレイヤーのメソッドであったとき、うまくいきました。??????" 私はこれを理解することができません...詳細を教えてください。 一般的に、この自己はあなたが作ったレイヤークラスのオブジェクトを示しています。この自己はあなたのクラスを代表するでしょう。クラスはスプライトシートの親ではありません。あなたのクラスオブジェクトは親です。 –

+0

Nikhil:私の方法は、更新メソッドを持つ私のメインのCCLayerと同じクラスにいました。今、私のメインのCCLayerで見た目をきれいにするために、このメソッドは別のクラスにあります。 – VagueExplanation

答えて

1

[seedSpriteSheet removeFromParentAndCleanup:YES];

編集をしてみてください:[[[myobject alloc]init] <instance method> ];:あなたはこのような何かをしない理由..so層のインスタンスメソッドにそれを変更したときに、それが働いたと述べました。私はそれが使用されているので動作することを知っている

+0

動作しません。それはseedSpriteでなく、seedSpriteSheetであるべきですか?しかし、seedSpriteも動作しません。 – VagueExplanation

+0

あなたは私が理解していないことを知っていますか?なぜあなたはこれに対してクラスメソッドを使用しますか? – skytz

+0

skytz:メインCCLayerクラスを小さくして読みやすくしたいのですが、クラスメソッドに送られるオブジェクトポインタの多くは、メインのCCLayerの束に参照されています。あなたはより良いアプローチを思いついていますか? – VagueExplanation

関連する問題