CCSprite をサブクラス化する必要がある場合:
- ほとんどは決してない
- スプライト自体の表示方法を変更する必要がある場合のみ(カスタム描画)
スプライトは Cocoa 用語で「ビュー」です。他のすべてのノードも同様です。つまり、スプライトは画面にテクスチャをレンダリングするオブジェクトです。スプライトの描画方法を変更したい場合、サブクラス化は理にかなっています。おそらく 2 つのテクスチャを 1 つにブレンドし、マスキング機能を追加したり、異なるシェーダー コードを実行したり、カスタム OpenGL 描画を追加したりします。
それが明確でない場合は、別のビュー クラスについて同じ質問をもう一度してください。
"What's the advantage of subclassing UIButton? When does it make sense?"
回答: ボタン自体の表示方法を変更する必要がある場合のみ。
UIButton をサブクラス化して、画面上を移動させたり、テキスト フィールドでアクションを実行させたりしないでください。それがView Controllerの仕事です。ビュー コントローラーを使用すると、ビューをサブクラス化せずにそのまま使用できます。必要なのはビュー コントローラーであり、CCSprite のサブクラスではありません。すでにあまりにも頻繁に行われています。
簡単に言えば:
CCSprite (など) をサブクラス化するのは、パブリック インターフェイスを介して意図したタスクを実行できない場合のみです。
位置、回転、スケール、テクスチャ、スプライト フレームなどの変更は、すべて外部クラス (コントローラー) から変更できるプロパティです。CCAnimation や実行中のアクションなど、スプライトのアニメーション化についても同じことが言えます。
MVC 設計で慣例のようにコントローラー オブジェクトを使用する場合、CCSprite やその他のノード クラスをサブクラス化する必要はほとんどありません。さらに、userObject プロパティを使用すると、コントローラー オブジェクトをノードと共に格納できるため、ノードの割り当てが解除されるとコントローラー オブジェクトも割り当て解除されます。
もちろん、どちらのアプローチも機能します。最終的には、ベスト プラクティスを使用するか、バッド プラクティスを使用するかだけです。