2014年7月18日金曜日

cocos2d v3.1非互換:CCCallFunc系メソッド置き換えでの留意事項

<留意事項>

  • CCCallFunc系クラス名を単純にCCActionCallFuncに置き換える事でコンパイルエラーは消すことが出来ますが実行時にSender値がNullのためアプリが異常停止する場合がありました。
    (原因)
    ・cocos2d v.3.1ではARC機能が有効になっているため、funcMenuHide:メソッドを呼び出したタイミングで既にオブジェクトが開放されていてエラーになる。
    (対応)
    ・CCActionCallBlockメソッドに置き換える。
  • CCActionCallFuncメソッドは極力使わず、CCActionCallBlockへの置き換えを検討した方が良いと思います。

// Actionメニュー非表示
    [actionMenu runAction:[CCSequence actions:
                            [CCFadeOut actionWithDuration:ACTION_DURATION / 2.0],
                            [CCCallFuncN actionWithTarget:self selector:@selector(_funcMenuHide:)],
                            nil]];

// Actionメニュー非表示
    [actionMenu runAction:[CCActionSequence actions:
                            [CCActionFadeOut actionWithDuration:ACTION_DURATION / 2.0],
                            [CCActionCallBlock actionWithBlock:
                             ^{
                                 [self _funcMenuHide:_actionMenu];
                             }],
                            nil]];




ではまた〜

0 件のコメント:

コメントを投稿