“无法访问私有字段”尽管@:access,但只能在FlxState子类之外?

时间:2016-04-19 04:50:42

标签: metadata haxe private-members haxeflixel

运行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()(我仍然希望它这样做。)

1 个答案:

答案 0 :(得分:1)

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

不要直接在@:access()中使用该成员,而是使用类的类型。在这种情况下,FlxG.keysFlxKeyboard,因此以下工作原理:

@:access(flixel.input.keyboard.FlxKeyboard)