我在Sprite Kit中有一个游戏,只要我触摸屏幕,这个游戏就会开始。我也想在游戏中有一个按钮,如果我触摸它,我只希望它被调用,而不是实际的游戏。下面是一个例子。当我在屏幕上的任何地方触摸时,都会被调用"touches screen“。我还有一个按钮,如果我可以的话,它叫“触摸按钮”。我的问题是,如果我触摸按钮并调用“按钮已触摸”,它也会调用“触摸开始触摸”。为什么?谢谢!
class GameScene: SKScene {
var button: SKNode! = nil
override func didMoveToView(view: SKView) {
button = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 100, height: 44))
button.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(button)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("touches began touched")
for touch in touches {
let location = touch.locationInNode(self)
if button.containsPoint(location) {
print("button touched")
}
}发布于 2016-05-02 07:49:25
如果我理解正确的话,您希望在调用touchesBegan时启动游戏。但是这个函数在你每次触摸屏幕的时候都会被调用,无论你在哪里。所以你可以这样做:
class GameScene: SKScene {
var button: SKNode! = nil
override func didMoveToView(view: SKView) {
button = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 100, height: 44))
button.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(button)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
if button.containsPoint(location) {
print("button touched")
}
else {
//start the game here
}
}这样,游戏将在你每次触摸屏幕时开始,除非你触摸按钮。
https://stackoverflow.com/questions/36973005
复制相似问题