ゲームの基本的な構成要素であるクラス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
(またはCopy
and/orを)実装するにはどうすればよいですか?CopyWithZone
CCSprite
_type
Block
ありがとう!