0

から継承する基本クラスを作成したいと思いますCCLayer。私の理由はCCSprite、アプリケーションのすべてのシーンにオーバーレイしたい単一画像のフルスクリーンがあるためです。基本クラスを作成しCCSprite、画像を最上位のZオブジェクトとして追加することは、シーンごとに同じオーバーレイ実装を何度も再コーディングする必要がないため、理にかなっているようです。

CCLayer比較的簡単にクラスを導き出すことができました。ただし、の子の子である別のレイヤークラスのシーンを正しく作成する方法がわかりませんCCLayer。これはどのように実行でき、機能しますか?

ほとんどのユーザーがそのような質問をするとき、最初のフォローは「コードを見せてください」であることを理解しています。コードをお見せすることはできますが、私が最も興味を持っているのは、Cocos2dオブジェクトの非常に一般的な実装です。これは、他のレイヤーから派生しCClayer、一般的なスプライトやオブジェクトを事前に配線して、他のレイヤーの基本クラスとして使用できます。

4

1 に答える 1

0

これがあなたの問題かもしれないと思います:

CCLayerの子の子であるシーンを作成する方法がわかりません。

私が理解しているように、Cocosレイヤーは、引用が示唆しているように、Cocosシーンに子として追加されますが、その逆ではありません。

CCLayerから派生し、CCSpriteを追加して、カスタムレイヤークラスを作成するだけでよいと思います。次に、CCLayerを作成または派生しているすべての場所に移動し、代わりにカスタムレイヤークラスからCCLayerを作成または派生して、必要に応じてスプライトを表示または非表示にします。

または、おそらくもっと簡単に、CCLayerにカテゴリを作成して、「showFullscreenSprite」メソッドを追加することもできます。このメソッドは、スプライトを作成してその画像を設定し、

[self addChild:yourSprite z:yourSprite.zOrder tag:9999];

また、これを行うだけの対応する「hideFullscreenSprite」メソッドも必要になります。

[self removeChildByTag:9999 cleanup:YES];

このアプローチの良いところは、サブクラス化する必要がまったくなく、すべてのCCLayerで「showFullscreenSprite」メソッドと「hideFullscreenSprite」メソッドを使用できるようになることです。

(注:「9999」は、CCNodeタグとしてまだ使用していない数値である必要があります。十分に大きくして、心配する必要がないようにしてください。「FULL_SCREEN_SPRITE_TAG」や読みやすさのためにそのようなものもあります。)

お役に立てれば!

于 2013-01-23T22:26:22.273 に答える