2016-03-06 47 views
1

在我的場景開始時,我正在運行一系列不同的動作,作爲關卡的一種介紹。我想讓它可以由用戶跳過。有沒有辦法通過SKAction來處理這個問題? SKAction是我的選擇,但也許有更好的方法來做到這一點。有任何想法嗎?跳過SKActions

+0

可跳過...如果您的意思是在屏幕上點擊並且操作完成,那麼你需要記住這些動作是什麼,並且觸摸就可以殺死所有的動作t操作並重新運行它們的持續時間爲0(或者只是手動設置任何完整的事件),如果你的意思是停止所有操作,那麼你可以刪除它們。最好的方法來做到這一點,給你的動作鍵,並調用'removeActionForKey'不知道是否有其他需要,這就是爲什麼我沒有這樣做的答案。 – Knight0fDragon

+0

這是天才......我從來沒有想過要用0的時間來運行它們。作出回答,我會接受。多謝,夥計! – 02fentym

回答

1

這是假設你想挖掘停止動作:

一個非常容易的,但可能是不穩定的辦法是剛剛殺青的動作是在運行一個瘋狂大量節點的速度,只記得重置它如果你需要節點。

一個更加穩定的簡單方法是保存你的動作並重新應用它們,持續時間爲零。

做到這一點,最好的辦法就是像這樣營造Dictionary爲您SKAction S:

var actionDict = [String,SKAction]() 

然後,只需保存密鑰自己的行爲,這樣就可以在將來訪問:

actionDict["moveUp"] = SKAction.moveToY(100,duration:100) 

現在,你有這方面的鍵,運行自己的行爲時,只是分配相同的密鑰:

node.runAction(actionDict["moveUp"],withKey:"moveUp") 

然後,當你需要結束它,只是刪除所需的操作:

node.removeActionForKey("moveUp") 

而且爲0的持續時間重新申請:

//if we want to retain the old duration, use copy 
let action = actionDict["moveUp"].copy() 
action.duration = 0 
node.runAction(action,withKey:"moveUp") 

注意,此方法僅適用行動的地方做對於事件,如果它正在執行一個By事件,則需要計算出最終目標點,並將其移動到持續時間爲0