3.5.3 消息調(diào)度
節(jié)點(diǎn)可以對(duì)消息進(jìn)行調(diào)度,其實(shí)就是指Objective-C中每隔一段時(shí)間調(diào)用一次方法。很多情況下,你可能想對(duì)一個(gè)節(jié)點(diǎn)采用特定的更新方法來(lái)進(jìn)行某個(gè)操作,例如碰撞檢測(cè)。要使特定的更新方法以每幀的頻率被調(diào)用一次,最簡(jiǎn)單的做法如下所示:
-(void) scheduleUpdates
{
[selfscheduleUpdate];
}
-(void) update:(ccTime)delta
{
// this method is called every frame
}
非常簡(jiǎn)單吧?注意,更新方法是有固定格式的,也就是說(shuō),它永遠(yuǎn)是像示例代碼這樣定義的。參數(shù)delta代表了該函數(shù)自上次被調(diào)用到現(xiàn)在所經(jīng)過(guò)的時(shí)間。如果希望每幀調(diào)用一次更新方法,以上示例是一個(gè)比較好的做法。但是如果想要有更好高的靈活性,最好還是采用其他更新方法。
如果想調(diào)用另一個(gè)方法,或者不想以每幀的頻率(而是以每0.1秒的頻率)調(diào)用該方法,就應(yīng)該采用以下做法:
-(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
}
注意,如果interval的值為0,還是應(yīng)該用scheduleUpdate方法。但是,假如你之后需要取消對(duì)一個(gè)定時(shí)方法的調(diào)用,最好還是采取上面的做法,因?yàn)閟cheduleUpdate方法做不到這一點(diǎn)。
這里的更新方法在格式上和原來(lái)一樣,還是只有一個(gè)參數(shù)“delta”。與之前有所不同的是,該更新方法的名稱(chēng)可以根據(jù)你的喜好來(lái)修改,而且它以0.1秒的頻率被調(diào)用。例如,當(dāng)游戲邏輯復(fù)雜到你不想以每幀的頻率去檢測(cè)玩家是否勝出時(shí),就可以采用這種做法。假如希望在10分鐘后調(diào)用某方法,可以用選擇器選定你的更新方法,并把interval設(shè)定為600。