ios - 如何使用 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
}
}
}
先感谢您
解决方案
我的代码是正确的,我的麻烦在于我在尝试使用按钮类时定义为 Objective-C 函数的函数。如果它对编写它的人有用: // 执行您应该执行的操作的代码,实际上在那里编写要执行的代码。
推荐阅读
- reactjs - 多次获取renderHook的结果
- laravel - Laravel 嵌套急切加载特定列在主要关系中的 where 条件
- nginx - GKE NGINX 入口 - Stackdriver 中没有数据
- awk - 将 AWK 的 2 个条件组合在 1 组正斜杠中
- reactjs - 从父(功能组件)中的子(基于类的组件)调用方法
- matlab - 为什么matlab中会出现关于gcc的错误?
- c - 如何使用 Zlib 一次压缩多个文件?
- java - 你应该在 addOnCompleteListener 里面写什么?
- node.js - NodeJS Web应用程序加载问题
- javascript - 如何从 Firefox 70 中的 utf-8 字符串中获取所有唯一字符表示?