gpt4 book ai didi

除非设置断点,否则 ios touchesBegan 不起作用

转载 作者:可可西里 更新时间:2023-11-01 02:26:05 32 4
gpt4 key购买 nike

我尝试像本教程中那样实现一个 CGButton: http://ganbarugames.com/2014/09/buttons-sprite-kit-using-swift/

我在一个简单的测试项目上尝试过这个,效果很好。然后我把它放在我的工作项目中,奇怪的事情发生了。

当我点击按钮时,touchesBegan() 没有被调用(我通过在其中添加一个 println 来检查这一点)。因此不会触发该操作。但是,如果我在 touchesBegan() 中的任何一行放置一个断点,那么这个断点就会命中,并且 touchesBegan() 可以在我继续后工作。 (例如 println() 这次打印出来)

我想断点不会影响程序的流程。是什么原因导致的,我该如何解决?

添加:当 touchesBegantouchesEnded 时,我在按钮上添加了一些动画(开始时缩放到 1.1,结束时缩放回原始大小)。事实证明,当我点击按钮时,touchesBegan 动画被触发(缩放到 1.1)但它只是停在那里,println 没有被点击。

最佳答案

如果你想构建一个通用按钮或开关,你应该尝试我制作的这个控件,使用起来非常简单:您只需初始化所需的按钮/开关类型(ColoredSprite、Textured 或 TextOnly)

let control = TWButton(normalColor: SKColor.blueColor(), highlightedColor: SKColor.redColor(), size: CGSize(width: 160, height: 80))

并且在初始化之后你给它添加一个闭包(就像 UIButton 上的 addTargetForSelector)

 control.addClosureFor(.TouchUpInside, target: self, closure: { (scene, sender) -> () in
scene.testProperty = "Changed Property"
})
}

就是这样! GitHub 页面上的自述部分有更多信息:https://github.com/txaidw/TWControls

但如果你想在特定节点中实现,我就是这样做的:

internal override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchPoint = touch.locationInNode(self.parent)

if self.containsPoint(touchPoint) {
self.touchLocationLast = touchPoint
touchDown()
}
}

internal override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchPoint = touch.locationInNode(self.parent)
self.touchLocationLast = touchPoint
}


internal override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
let touchPoint = touch.locationInNode(self.parent)

if let lastPoint = self.touchLocationLast where self.containsPoint(lastPoint) {
// Ended inside
touchUpInside()
}
else {
// Ended outside
touchUpOutside()
}
}

关于除非设置断点,否则 ios touchesBegan 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950440/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com