ゲームの基本的な構成要素であるクラスCCSpriteを作成するために、クラスを拡張することを計画しています。Block多数の「アーキテクチャ ブロック」 (個々のブロックのベースとなるプロトタイプ) が存在する場合があります。特に、ユーザーがゲーム ボードに配置するビルディング ブロックを選択できるパレットを作成したいと考えています。ボード上に配置されると、ビルディング ブロックは独自のアイデンティティを獲得します。
これが私がこれまでに持っているものです:
class Block : public CCSprite {
private:
int _id = 0;
int _type = 0;
public:
Block* CopyBlock();
}
ユーザーが を選択Blockしてゲーム ボードにドロップすると、CopyBlockが呼び出され、プロトタイプが安全にパレットに戻され、新しく作成されたオブジェクトBlockがゲーム ボード上で独自の生活を続けます。
CCObjectメソッドを「実装」していることに気付きましたがCopy、私が知る限り、これは実装されていないCopyWithZone(0)forCCObjectを参照しているだけです。ただし、Copyメソッドは仮想ではないため、これをオーバーライドできるかどうかは少しわかりません。(私は C++ にそれほど強いわけではありませんが、OOP についてはよく理解しています。そのため、誰かが共有したい場合は詳細を知りたいと思っています。)
質問:
1) このデザインは理にかなっていますか? オーバーライドCopyおよび/またはCopyWithZone代わりに使用する必要がありますか?
2)ものとメンバーの両方が new にコピーされるようにCopyBlock(またはCopyand/orを)実装するにはどうすればよいですか?CopyWithZoneCCSprite_typeBlock
ありがとう!