首页 > 解决方案 > 如何使用 SpriteKit 场景中自定义按钮子类的 touchesEnded 执行操作?

问题描述

我创建了自己的 SKNode 子类以创建按钮类。我让它显示按钮,但无法让它工作。到目前为止,我已经在我的类中创建了一个方法来获取我希望按钮在被触摸时执行的操作。但实际上,当我在课堂上覆盖 touchesEnded() 时,我不知道如何传递该操作。我已经尝试了几乎所有我能找到的东西,但没有结果。我的代码:

override init() {
  super.init()
  self.isUserInteractionEnabled = true
}
var actionTouchUpInside: Selector?
var actionTouchUp: Selector?
var actionTouchDown: Selector?
weak var targetTouchUpInside: AnyObject?
weak var targetTouchUp: AnyObject?
weak var targetTouchDown: AnyObject?

func setButtonAction(target: AnyObject, triggerEvent event:SKButtonActionType, action:Selector) {

    switch (event) {
    case .TouchUpInside:
      targetTouchUpInside = target
      actionTouchUpInside = action
    case .TouchDown:
      targetTouchDown = target
      actionTouchDown = action
    case .TouchUp:
      targetTouchUp = target
      actionTouchUp = action
    }
}
override public func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
     if let touch = touches.first {
        let location = touch.location(in: parent!)
        if self.contains(location) {
        // Code for performing the action
         }
     }
}

先感谢您

标签: iosswiftxcodesprite-kit

解决方案


我的代码是正确的,我的麻烦在于我在尝试使用按钮类时定义为 Objective-C 函数的函数。如果它对编写它的人有用: // 执行您应该执行的操作的代码,实际上在那里编写要执行的代码。


推荐阅读