我正在构建一个高度可定制的组件,框架,以在未来的游戏开发项目中实施;一个操纵杆。 p>
操纵杆应该在用户触摸屏幕时出现,内部旋钮随着触摸的改变而四处移动,而在触摸结束时它最终消失。
编写一个响应这种行为的组件并不是什么大问题;但是,我想做的是从用户那里委派尽可能多的“原始”控件,并实现响应触摸的方法,而不必手动覆盖UIResponder
touchesBegan
等方法。
到目前为止,我已经完成的工作:我在框架内使用公共扩展扩展了SKScene
,该扩展覆盖了touches
方法,并调用了更新屏幕上操纵杆位置的静态方法。取决于当前的触摸和事件。
我想解决的只是细微差别。这是我的代码:
public extension SKScene {
override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
Joystick.touchesBegan(touches, with: event)
}
}
XCode希望touchesBegan
方法必须具有open
修饰符,但是扩展可以采用的限制最少的修饰符是public
; XCode发出警告:
“打开”修饰符与扩展名的“公共”默认访问权限冲突
有什么办法可以解决这个问题?我的实现是否被认为是错误的设计,如果是这样,是否有另一种方法可以实现此结果而无需用户手动实现和覆盖touches
方法?谢谢。