現在、文字のあるタイルのボードがあるシーンのあるゲームに取り組んでいます。タイルは、動的ボード上の配置と「文字値」により、実行時に配置されます。
CCScene (fullscreen)
CCLayer (board)
CCNodes (tiles)
Tile.ccb という名前の ccb ファイルを作成しました。これは、背景グラデーションと TTF レイヤーを備えた小さくてシンプルな CCNode です。CCNode には「Touched」というタイムラインがあり、ユーザーがタイルに触れたときに再生される短いアニメーションが含まれています。ノードには、カスタム クラス セットもあります。(STタイル)
現在、次の方法ですべてのタイルをプログラムでロードしています。
+ (STTile *)tileWithLetter:(NSString *)letter onRow:(int) x andCol: (int) y;
{
STTile *tile = (STTile *)[CCBReader nodeGraphFromFile:@"Tile.ccbi"];
tile.letterLabel.string = letter;
tile.x = x;
tile.y = y;
return tile;
}
ボード上の位置の新しいタイルを作成して返します。Cocos2D (Objective-C) では、STTile は CCNode のサブクラスです。
タイルが表示され、letterLabel を適切に調整できます。ただし、アニメーション「Touched」の再生は機能しません。次のコードは STTile の一部であり、タッチ時にアニメーション/シーケンスを再生するために使用されます。
CCBAnimationManager *animationManager = self.userObject;
[animationManager runAnimationsForSequenceNamed:@"Touched"];
「self.userObject」の値 (CCAnimationManager を保持する) は、ロード直後に [CCBReader nodeGraphFromFile] によって「クリーンアップ」されるため、NULL です。これは設計によるものですか?もしそうなら、なぜですか?CocosDragon の例に見られるように、タイル ノードが「デザイン タイム」に「ボード」レイヤーに配置されている場合、アニメーション化のための同じコードは問題なく機能します。(CCB 内の CCBFile 参照)
実行時に CCB ノードの複数のインスタンスを作成し、それらでアニメーションを実行できるようにするにはどうすればよいですか? 設計時にノードを配置することは、常にオプションとは限りません。前もって感謝します!