2016-03-06 82 views
1

我試圖爲我的一個精靈創建一個「按鈕觸摸」效果,它工作的很好,但隨後我用兩個或更多的手指同時敲擊,我得到了非常奇怪的結果,這裏是我的代碼:SpriteKit水龍頭縮放

let buttonPressAction = SKAction.scaleBy(0.8, duration: 0) 

var button = SKNode() 


override func didMoveToView(view: SKView) { 

    //assign sprite to node 

    button = self.childNodeWithName("button") as! SKSpriteNode! 

    } 

for touch: AnyObject in touches { 

    let location = touch.locationInNode(self) 

    if button.containsPoint(location) { 

     button.runAction(buttonPressAction) 

    } 
} 

} 

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    button.runAction(buttonPressAction.reversedAction()) 
} 

回答

1

嘗試從

改變SK規模的行動
...scaleBy 

...scaleTo 

,以確保它總是會擴展到SA我的大小。隨着scaleBy它會縮放0.8,而不是0.8。這很可能會導致在多次觸摸時出現奇怪的結果,因爲您將每個手指/敲擊縮放0.8。

我從來沒有使用reverseAction,所以我不確定這是否會導致問題。如果它只是通過縮放它重置按鈕返回到1

...scaleTo(1, duration: 0) 

由於作爲側面說明,你可以說

for touch in touches 

,而不是

for touch: AnyObject in touches 
+0

如果我點擊並按住精靈,它scaleDown(這是很好),但如果繼續保持,我用其他手指在屏幕上點擊,它會多次調用相反的動作,多次放大精靈大小。我嘗試了scaledTo,它的工作原理!現在唯一的一件事就是我調整了gameScene中的精靈,當我縮放到1時,它調整到原始大小....感謝上一個答案!我感謝它! – extrablade

+0

您能否將答案標記爲正確?我真的不明白你的評論的後半部分。我從不使用reverAction,也許只是嘗試... scaleTo(1,duration:0)重置按鈕。 – crashoverride777

+0

,因爲我調整了GameScene.sks中按鈕的精靈,每當觸摸結束時,我將其縮小(scaleTo1,duration:0),並將其調整爲「真實」大小,其大小是在調整它的大小之前GameScene.sks – extrablade