1

运行 Haxe 3.2.1。

我正在构建一些特殊的东西,需要访问 HaxeFlixel 的内部,所以我在需要它的函数上方添加了这个:

@:access(flixel.FlxG.keys)

override update()这在子类的上下文中有效FlxState

然后我想将此代码移到更高的级别[1]。所以我创建了一个新类(不是任何东西的子类),将代码放在新类的函数中,然后将其移至@:access新函数的上方。

新类不会编译,说Cannot access private field playback. 为什么会这样,当我拥有@:access以前工作过的相同元数据时?

[1] 即通过调用它,如果我的子类打开一个子状态,FlxG.signals.preUpdate它也会运行,这通常会暂停父状态(我仍然希望它这样做。)FlxStateupdate()

4

1 回答 1

1

对于“我不确定以前是如何工作的”部门:

不要在@:access() 中直接使用成员,而是使用类的类型。在这种情况下,FlxG.keys是 a FlxKeyboard,所以以下工作:

@:access(flixel.input.keyboard.FlxKeyboard)
于 2016-04-19T05:02:30.603 回答