2013年9月13日金曜日

CCNodeクラス


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 件のコメント:

コメントを投稿