2013-09-25 183 views
7

如何在運行動作之前檢查SKNode是否已經在運行一個動作? 我希望能夠做這樣的事情......檢查SKNode是否正在運行SKAction

if (![mySprite isRunningActions]) { 
    [mySprite runAction:action]; 
} 

如果在辦法,我想保持動作狀態創建一個新的BOOL屬性沒有內置。

回答

11

查看使用任何SKAction基於密鑰的方法的命名操作。所以你應該使用與runAction:相同的命名等價來運行你的動作,即runAction:withKey:。如果具有相同密鑰的操作已在運行,則在新操作添加之前將其刪除。或者,使用actionForKey:來查看某個操作是否已在運行,就像您現在正在代碼中嘗試執行的操作一樣,然後removeActionForKey:將其刪除或根據需要進行處理。

+1

這是一個更好的答案,因爲你可以檢查一個特定的動作,而不是檢查精靈是否正在運行任何動作(當然,那就是如果你知道動作的關鍵:) – Septronic

14

對不起,對於遲來的答案,但你可以使用精靈方法hasActions來檢查精靈當前是否正在運行任何操作。

if (![mySprite hasActions]) 
{ 
    [mySprite runAction:action]; 
}