HaxeFlixel:如何在另一个类中调用getter/setter变量
问题描述:
我正在构建一个基本的游戏来学习HaxeFlixel的来龙去脉,并且想从MenuState
的PlayState
中调用具有getter/setter属性的变量。代码看起来是这样的:HaxeFlixel:如何在另一个类中调用getter/setter变量
class MenuState extends FlxState
{
@:isVar public var myVar(get, null):Bool;
public function get_myVar():Bool
{
return myVar;
}
}
class PlayState extends FlxState
{
private var _foo:Bool;
override public function create():Void
{
// var ms = new MenuState; doing it like this doesn't return anything
_foo = MenuState.get_myVar();
if (_foo)
{
// do this thing
}
else
{
// do that thing
}
}
}
有了它返回做的事情毫秒变量,没有它,我得到一个错误Class<MenuState> has no field get_myVar
。我相信这可能不是如何编写代码,但在这一点上,我只是试图让它工作。基本上我想要做的是让MenuState写入PlayState
读取但不能写入的变量。我会怎么做呢?
答
myVar
以及MenuState
中的吸气功能在您的代码中不是static,因此您不能像MenuState.get_myVar()
那样访问它们。我认为制作myVar
静态将是您的问题的一个好方案。你可以直接拨打get_myVar()
。只要您在MenuState
之外访问myVar
,就会调用吸气器。您可以通过将trace("message");
添加到get_myVar
来测试。
答
您需要使用构造函数创建它的实例,即public function new()
。出于这个原因,通常最好使用构造函数为var创建一个独立的class.hx,然后在playstate中创建它的一个实例。
否则,我会创建一个注册表类来存储需要被共享的增值经销商,例如,创建一个名为像Reg.hx
在主包新的类,然后:
package;
//imports etc.
class Reg {
public static var myVar:Bool;
}
,那么你只需要到import Reg
到你想要的任何课程,你可以在那里访问它。我喜欢这样做!