CCNodeはすべてのノードの親クラス
ノードを操作する
CCNode* childNode = [CCNode node]; //新しいノード作成 [myNode addChild:childNode z:0 tag:123]; //子を追加。zの小さいものから順に描画。zが同じ場合は追加順 CCNode* retrievedNode = [myNode getChildByTag:123]; //子を取得 [myNode removeChildByTag:123 cleanup:YES]; //タグで子を削除。cleanupは実行中のアクションも全て停止 [myNode removeChild:retrievedNode]; //ノードポインタで削除 [myNode removeAllChildrenWithCleanup:YES]; //すべての子ノード削除 [myNode removeFromParentAndCleanup:YES]; //親ノード(myNode)を削除同じタグをつけるとその中から最初のノードしか取り出せない
ノードとアクションのタグは競合しない
アクションを操作する
ノードではアクションも実行できる。移動、回転、拡大縮小などCCAction* action = [CCBlink actionWithDuration:10 blinks:20]; //アクションを宣言する action.tag = 234; [myNOde runAction:action]; //ノードを点滅させるアクションを実行 CCAction* retrievedAction = [myNode getActionByTag:234]; //タグを使ってアクションを取得 [myNode stopActionByTag:234]; //タグを使って停止 [myNode stopAction:action]; //ポインタで停止 [myNode stopAllActions]; //ノードのすべてのアクションを停止
スケジュールされたメッセージ
[self scheduleUpdate]でupdateを設定すると-(void) update:(ccTime)delta
が各フレームで呼び出される。
別のメソッド、あるいは別の間隔で呼び出したい場合は
[self schedule:@selector(updateTenTimesPerSecond:) interval:0.1f];とすると
-(void) updateTenTimesPerSecond:(ccTime)delta
が0.1秒おきに呼び出される
ノードのすべてのセレクタを停止させるには
[self unscheduleAllSelectors];
特定のメッセージを停止するには
[self unschedule:@selector(updateTenTimesPerSecond:)];//セレクタを指定した場合
[self unscheduleUpdate];//scheduleUpdateで呼び出した場合
セレクタ内で停止させるには
[self unschedule:_cmd];//_cmdは現在のメソッドを表す省略表記
ノードごとにupdateに優先順位を付けられる
[self scheduleUpdateWithPriority:-1];//デフォルトは0なので-1が先に呼び出される
0 件のコメント:
コメントを投稿