私はCCSprite
オブジェクトを持っていて、それを別の にコピーしたいと思っていますCCSprite
。それでは、そのコピーをお見せしたいと思います。このコードを試してみましたが、実行時エラーが発生します。
CCSprite* copy=CCSprite::spriteWithTexture(original->getTexture());
のコピーを作成するにはどうすればよいCCSprite
ですか?
コピーで使用しているときに、オリジナルのテクスチャが削除されないようにする必要があります。
重複するスプライトを多数作成する場合は、スプライトをCCArrayに保存してから、関数のスケジュールを使用してスプライトを追加するための関数を再度呼び出す必要があります。
あなたはスピードのためにこれをしていますか?
その場合は、「スプライトシート」を使用する必要があります。スプライトシートを使用すると、スプライトフレーム(グラフィックス)のセットがテクスチャメモリにロードされ、これらのスプライトフレームのいずれかでスプライトを作成するたびに、システムは実際にはすでにメモリにある同じテクスチャを使用しています。また、画面上にスプライトを描画する場合、そのテクスチャを使用しているスプライトはすべて「バッチ」で(すべて同時に)描画し、処理サイクルを節約します(高速です)。
例については、このプロジェクトを参照してください。車と猫のスプライトはスプライトシートに読み込まれます: http ://www.gmtdev.com/blog/2011/08/19/how-to-use-box2d-for-just-collision-detection-with-cocos2d-バツ/
cocos2dx ではスプライトの clone メソッドが提供されていませんでした。このように最初のスプライトのテクスチャを取得して自分で作成し、そのテクスチャでスプライトを作成する必要がありました。
スプライト *clonedSprite = Sprite::createWithTexture(originalSprite->getTexture());
CCObject::copy() を調べましたか?
私はこの手法をアクションのコピーによく使用します。CCSprite は CCObject から派生しているため、まだ試していませんが、スプライト インスタンスで copy() を呼び出すことでスプライトをコピーできる可能性があります。