2

cocos2d (iphone jsb + cocos2d-html5) でクロスプラットフォーム ゲームを書いていますが、実際にクロスプラットフォームにする方法を考えています。-html5 で動作するコードが -iphone jsb で動作するとは限らず、その逆も同様です。

現在、次の(関連する)質問に行き詰まっています。

  1. ctorとはどう違いinitますか?
  2. いつオーバーロードする必要がctorあり、いつオーバーロードする必要がありinitますか?
  3. and/or_super()からいつ呼び出す必要がありますか?ctorinit
  4. do をオーバーロードした場合、いつ.init()から呼び出す必要がありますか?ctorctor
  5. オブジェクトをインスタンス化するにはどうすればよいですか? とvar inst = new Obj(); inst.init();? それともただvar inst = new Obj();?理にかなった方法があることは理解してい.create()ますが、私が独自のcreate方法を書いている場合に尋ねています。
  6. いつ使用する必要がありますassociateWithNativeか?

html5 バージョンで動作するコードがいくつかありましたが、iPhone jsb バージョンでオブジェクトが既に初期化されているというエラーが表示されたので、明らかに何か問題がありました。MoonWarriors のコードを調べてみましたが、必要だと思っていた を使用していないassociateWithNativeようです。ctorinitctor

4

2 に答える 2

2

ad 1-5. ctor を上書きすると、特に JS の世界から来た人にとっては特に便利に思えるかもしれませんが、他のプラットフォームで cocos2d-js コードをコンパイルするときに問題が発生する可能性があります。エラーが発生した場合ERROR in *: Invalid Proxy object、上書きが原因である可能性があります。 ctorメソッド(私にとってはほとんどありませんでした)。また、ネイティブ クラスのコンストラクター メソッドは、ネイティブ クラスから継承するクラスの最後に上書き/処理するパラメーターを期待する場合があり、競合が発生する可能性もあります。

それとは別に、すべての違いはKexによって説明されました-提供されたサンプルとcocos2dソースを見るのが最も安全で「Cocos2dの方法」は、 init メソッドと static factory の組み合わせを使用することcreateです。

ad 6.associateWithNativeこのメソッド を使用する必要はなくなりました(詳しくはcocos2d-js-devel をご覧ください) 。

于 2013-05-14T07:31:26.730 に答える