從長(zhǎng)遠(yuǎn)來看,使用_cmd關(guān)鍵字能為你減少很多痛苦,因?yàn)樗鼛椭惚苊饬撕芏嘁驗(yàn)檫x擇器選錯(cuò)方法而帶來的可怕問題。
關(guān)于調(diào)度,還有最后一個(gè)問題要提一下,那就是更新方法的優(yōu)先級(jí)。請(qǐng)看以下代碼:
// in Node A
-(void) scheduleUpdates
{
[self scheduleUpdate];
}
// in Node B
-(void) scheduleUpdates
{
[self scheduleUpdateWithPriority:1];
}
// in Node C
-(void) scheduleUpdates
{
[self scheduleUpdateWithPriority:-1];
}
看懂這段代碼可能要花一點(diǎn)時(shí)間。所有節(jié)點(diǎn)都在調(diào)用“– (void) update:(ccTime)delta”方法。但是因?yàn)橛辛藘?yōu)先級(jí)設(shè)定,所以節(jié)點(diǎn)C中的更新方法是最先被調(diào)用的。接下來是調(diào)用節(jié)點(diǎn)A中的更新方法,因?yàn)閟cheduleUpdate的默認(rèn)優(yōu)先級(jí)為0。最后是節(jié)點(diǎn)B中的更新方法被調(diào)用,因?yàn)樗膬?yōu)先級(jí)最高。更新方法是以優(yōu)先級(jí)從低到高的順序被調(diào)用的。
你可以能心存疑惑,什么時(shí)候會(huì)用到這個(gè)優(yōu)先級(jí)呢?老實(shí)說,它確實(shí)不常用,以我多年的經(jīng)驗(yàn)來看,它會(huì)在一些比較少見的情況下發(fā)揮優(yōu)勢(shì),例如,在物理模擬器發(fā)生自動(dòng)更新前后對(duì)某個(gè)物理對(duì)象施加力的作用。官方文檔對(duì)于優(yōu)先級(jí)的解釋也能證實(shí)我的這個(gè)觀點(diǎn),因?yàn)樗蔡岬搅宋锢砀?。有時(shí)候,通常是在項(xiàng)目開發(fā)后期,你會(huì)發(fā)現(xiàn)一些因?yàn)橛?jì)時(shí)問題導(dǎo)致的奇怪的bug,要解決問題,你必須要在其他所有對(duì)象都更新完之后,再對(duì)玩家進(jìn)行更新。
在碰到與更新的優(yōu)先級(jí)相關(guān)的問題之前,你可以放心地跳過這段內(nèi)容。