2016-03-06 80 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