2014年7月11日金曜日

cocos2d v3.1非互換:CCSprite等のノード識別方法の変更

<非互換項目>

  • CCSprite等のノード識別に使っていた「Tag」が「Name」に変わっている

<対応方法>

  • getChildByTag:」,「removeChildByTag:」とかTag値で識別していた箇所はそれぞれ対応する「ByName」新メソッドへ全部置き換え。

    <改修例>

    1. addChildメソッド
      [_triangleShape addChild:theBombSprite z:1 tag:kTagMark];
                  ↓
      [_triangleShape addChild:theBombSprite z:1 name:kTagMark];

    2. getChildByTagメソッド
      [_triangleShape getChildByTag:kTagMark]
                  ↓
      [_triangleShape getChildByName:kTagMark recursively:NO]
        …「recursively:」は再帰的に探すって意味でしょうか!?

    3. removeChildByNameメソッド
      [_triangleShape removeChildByTag:kTagMark cleanup:YES];
                  ↓
      [_triangleShape removeChildByName:kTagMark cleanup:YES];


    <所感>

    • Tag指定は整数値だったのがName指定ではNSString文字列に変更となっていますので上記例では「kTagMark」は文字列定数として宣言しています。
    • この改変もSpriteBuilder採用による判断だとは推測できますし、確かに文字列での名前付けは自然で人間にも分り易いとは思いますがTag値による識別も残しても良かったんではないでしょうか。(Tagは使わなければ影響無いですし、既にTagを使っているプログラムの互換性も保てますので。。。)

    ではまた〜

    0 件のコメント:

    コメントを投稿