【问题标题】:SKSprite node button does not react like UIButton while being pressed. SwiftSKSprite 节点按钮在按下时不会像 UIButton 那样做出反应。迅速
【发布时间】:2015-05-31 22:24:55
【问题描述】:

我使用 Sprite Kit 和 Swift 在 Xcode 中创建了一个游戏。但是,当我创建按钮时,每次按下它们时,它们看起来都不像被按下(突出显示)。我怎样才能使按钮像普通的 UIButton 一样对触摸做出反应。附上我游戏中的示例代码。

let next = SKSpriteNode(imageNamed: "next")

next.size = CGSizeMake(50, 25)
    next.position = CGPoint(x: size.width/1.1, y: size.height/7.5)
    next.name = "next"
    next.alpha = 1.0
    addChild(next)


override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    let location = touches.anyObject()?.locationInNode(self)
    var node = self.nodeAtPoint(location!)

    if node.name == "next" {


        runAction(SKAction.sequence([
            SKAction.waitForDuration(0.0),
            SKAction.runBlock() {
                let reveal = SKTransition.moveInWithDirection(SKTransitionDirection.Right, duration: 0.2)
                let scene = StageSelectTwo(size: self.size)
                self.view?.presentScene(scene, transition:reveal)
            }
            ]))
    }

【问题讨论】:

    标签: swift


    【解决方案1】:

    你所做的不是一个按钮,而是一个 SKSpriteNode,如果你触摸它就会做一些事情。由于它不是按钮,因此它不会继承与按钮相关的功能,例如高亮效果。

    我建议您转到 main.storyboard 并在您向其展示 SKScene 的视图中拖动一个 UIButton。这样,它就像一个按钮,具有突出显示的功能。

    您将该按钮链接到视图控制器中的 IBAction,并且您可以按照正常情况执行任何操作。

    【讨论】:

    • 另外,Miles 可以在 Sprite Kit 中实现所需的响应 - 例如,在 touchesBegan 中为 node.size 设置动画。 Sprite Kit 的好处在于您可以进行多少自定义。 (但如果只是使按钮变暗/变亮,UIButton 会更可取。)
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2023-03-19
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多