cocos2d笔记——CCNode与CCAction
CCNode
CCNode是所有node的基類,它是一個(gè)抽象類,沒有可視化表示形式,定義了所有node共有的屬性和方法。
操作子節(jié)點(diǎn)的一些方法:
CCNode* childNode = [CCNode node];//創(chuàng)建一個(gè)新節(jié)點(diǎn)
[myNode addChild:childNode z:0 tag:123];//添加子節(jié)點(diǎn)
CCNode* retrievedNode = [myNode getChildByTag:123];//根據(jù)標(biāo)簽取得節(jié)點(diǎn)
[myNode removeChildByTag:123 cleanup:YES];//根據(jù)標(biāo)簽刪除子節(jié)點(diǎn),cleanup會(huì)刪除所有正在運(yùn)行的動(dòng)作
[myNode removeChild:retrieveNode];//根據(jù)指向子結(jié)點(diǎn)的指針刪除本子節(jié)點(diǎn)
[myNode removeAllChildrenWithCleanup:YES];//刪除所有子節(jié)點(diǎn)
[myNode removeFromParentAndCleanup:YES];//從父節(jié)點(diǎn)中刪除myNode
Action 動(dòng)作
節(jié)點(diǎn)可以有動(dòng)作,以后會(huì)提到。現(xiàn)在制止到動(dòng)作可以包括移動(dòng)、旋轉(zhuǎn)、放大縮小和其他隨時(shí)間推移做一些事。
CCAction* action= [CCBlink actionWithDuration:10 blinks:20];//動(dòng)作聲明,一個(gè)閃爍動(dòng)作
[myNode runAction:action];//讓節(jié)點(diǎn)閃爍
CCAction* retrievedAction = [myNode getActionByTag:234];//根據(jù)標(biāo)簽取得節(jié)點(diǎn)
[myNode stopActionByTag:234];//根據(jù)標(biāo)簽停止動(dòng)作
[myNode stopAction:action];//根據(jù)指針停止動(dòng)作
[myNode stopAllActions];//停止本節(jié)點(diǎn)的一切動(dòng)作
Scheduled Message 定時(shí)消息
節(jié)點(diǎn)可以觸發(fā)定時(shí)消息。很多情況下,你需要一個(gè)特定的更新方法以運(yùn)行在某個(gè)結(jié)點(diǎn)上進(jìn)行一些處理,比如沖突檢測(cè)。最簡(jiǎn)單的方法就是像下面這樣在每一幀都定期調(diào)用方法:
-(void) scheduleUpdates{[self scheduleUpdate];
}
-(void) update:(ccTime)delta{
//此方法在每一幀都調(diào)用
} 復(fù)制代碼
非常簡(jiǎn)單是吧?注意update有一個(gè)固定的特征,意思是它一直用此方式定義。參數(shù)delta是代表從上次調(diào)用后過去的時(shí)間。這是每幀都定時(shí)觸發(fā)更新的首選方式,不過有些情況下也會(huì)使用一些更靈活的更新方法。
如果你需要一個(gè)不同的方法,或者你不想讓這個(gè)方法每幀調(diào)用而是每十分之一秒調(diào)用,那就需要用下面這個(gè):
-(void) scheduleUpdates{[self schedule:@selector(updateTenTimesPerSecond:) interval:0.1f];
}
-(void) updateTenTimesPerSecond:(ccTime)delta{
//this method is called according to its interval, ten times per second
} 復(fù)制代碼
總結(jié)
以上是生活随笔為你收集整理的cocos2d笔记——CCNode与CCAction的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 75-76
- 下一篇: C#DataGridView添加序号