首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spritekit:如何分别调用touches began和in touches?

Spritekit:如何分别调用touches began和in touches?
EN

Stack Overflow用户
提问于 2016-05-02 07:08:31
回答 1查看 3.4K关注 0票数 1

我在Sprite Kit中有一个游戏,只要我触摸屏幕,这个游戏就会开始。我也想在游戏中有一个按钮,如果我触摸它,我只希望它被调用,而不是实际的游戏。下面是一个例子。当我在屏幕上的任何地方触摸时,都会被调用"touches screen“。我还有一个按钮,如果我可以的话,它叫“触摸按钮”。我的问题是,如果我触摸按钮并调用“按钮已触摸”,它也会调用“触摸开始触摸”。为什么?谢谢!

代码语言:javascript
复制
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")

    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-05-02 07:49:25

如果我理解正确的话,您希望在调用touchesBegan时启动游戏。但是这个函数在你每次触摸屏幕的时候都会被调用,无论你在哪里。所以你可以这样做:

代码语言:javascript
复制
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
    }
}

这样,游戏将在你每次触摸屏幕时开始,除非你触摸按钮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36973005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档