运行Haxe 3.2.1。
我正在构建一些需要访问HaxeFlixel内部的特殊内容,所以我在上面添加了需要它的函数:
@:access(flixel.FlxG.keys)
这在override update()
子类中FlxState
的上下文中起作用。
然后我想将此代码移到更高级别[1]。所以我创建了一个新类(不是任何子类),将代码放在新类的函数中,然后将@:access
移到新函数之上。
新类不会编译,说Cannot access private field playback
。当我拥有之前工作的@:access
元数据时,为什么会这样?
[1] I.e.要通过FlxG.signals.preUpdate
调用,以便在我的FlxState
子类打开子状态时运行它,这通常会暂停父状态update()
(我仍然希望它这样做。)
答案 0 :(得分:1)
对于“我不确定它是如何工作的”部门:
不要直接在@:access
()中使用该成员,而是使用类的类型。在这种情况下,FlxG.keys
是FlxKeyboard
,因此以下工作原理:
@:access(flixel.input.keyboard.FlxKeyboard)