Actionscript 3 使用反射和字符串id获取/设置Haxe中的动态对象
我把这个actionScript3代码移植到haxeActionscript 3 使用反射和字符串id获取/设置Haxe中的动态对象,actionscript-3,haxe,haxeflixel,Actionscript 3,Haxe,Haxeflixel,我把这个actionScript3代码移植到haxe public static const DATA_COMPLETE_LEVELS : String = "save_game_data_complete_levels"; private var _completedLevelKeys:Vector.<String>; public function get completedLevelKeys():Vector.<String> { if (this.
public static const DATA_COMPLETE_LEVELS : String = "save_game_data_complete_levels";
private var _completedLevelKeys:Vector.<String>;
public function get completedLevelKeys():Vector.<String> {
if (this.data[DATA_COMPLETE_LEVELS])
return (Vector.<String>)(this.data[DATA_COMPLETE_LEVELS]);
return null;
}
public function set completedLevelKeys(value:Vector.<String>):void {
if(value)
this.data[DATA_COMPLETE_LEVELS] = (Vector.<String>)(value);
}
public static const DATA\u COMPLETE\u LEVELS:String=“save\u game\u DATA\u COMPLETE\u LEVELS”;
私有变量_completedlevelkey:Vector。;
公共函数get completedLevelKeys():Vector。{
if(此.data[数据完成水平])
返回(向量)(此.data[数据完成水平]);
返回null;
}
公共函数集completedLevelKeys(值:Vector.):void{
如果(值)
此.data[data\u COMPLETE\u LEVELS]=(向量)(值);
}
我只是被haxe弄脏了手,我对Reflect有点困惑
Haxe中的等效代码是什么?这应该可以:
public static inline var DATA_COMPLETE_LEVELS = "save_game_data_complete_levels";
public var completedLevelKeys(get, set) : Vector<String>;
function get_completedLevelKeys() : Vector<String>
return Reflect.field(this.data, DATA_COMPLETE_LEVELS);
function set_completedLevelKeys(values : Vector<String>) : Vector<String>
{
if(null != values)
Reflect.setField(this.data, DATA_COMPLETE_LEVELS, values);
return values;
}
public static inline var DATA\u COMPLETE\u LEVELS=“save\u game\u DATA\u COMPLETE\u LEVELS”;
公共var completedlevelkey(get,set):向量;
函数get_completedLevelKeys():Vector
返回Reflect.field(this.data、data\u COMPLETE\u LEVELS);
函数集\u completedLevelKeys(值:Vector):Vector
{
if(null!=值)
Reflect.setField(this.data、data\u COMPLETE\u LEVELS、value);
返回值;
}
这应该可以:
public static inline var DATA_COMPLETE_LEVELS = "save_game_data_complete_levels";
public var completedLevelKeys(get, set) : Vector<String>;
function get_completedLevelKeys() : Vector<String>
return Reflect.field(this.data, DATA_COMPLETE_LEVELS);
function set_completedLevelKeys(values : Vector<String>) : Vector<String>
{
if(null != values)
Reflect.setField(this.data, DATA_COMPLETE_LEVELS, values);
return values;
}
public static inline var DATA\u COMPLETE\u LEVELS=“save\u game\u DATA\u COMPLETE\u LEVELS”;
公共var completedlevelkey(get,set):向量;
函数get_completedLevelKeys():Vector
返回Reflect.field(this.data、data\u COMPLETE\u LEVELS);
函数集\u completedLevelKeys(值:Vector):Vector
{
if(null!=值)
Reflect.setField(this.data、data\u COMPLETE\u LEVELS、value);
返回值;
}
这应该可以:
public static inline var DATA_COMPLETE_LEVELS = "save_game_data_complete_levels";
public var completedLevelKeys(get, set) : Vector<String>;
function get_completedLevelKeys() : Vector<String>
return Reflect.field(this.data, DATA_COMPLETE_LEVELS);
function set_completedLevelKeys(values : Vector<String>) : Vector<String>
{
if(null != values)
Reflect.setField(this.data, DATA_COMPLETE_LEVELS, values);
return values;
}
public static inline var DATA\u COMPLETE\u LEVELS=“save\u game\u DATA\u COMPLETE\u LEVELS”;
公共var completedlevelkey(get,set):向量;
函数get_completedLevelKeys():Vector
返回Reflect.field(this.data、data\u COMPLETE\u LEVELS);
函数集\u completedLevelKeys(值:Vector):Vector
{
if(null!=值)
Reflect.setField(this.data、data\u COMPLETE\u LEVELS、value);
返回值;
}
这应该可以:
public static inline var DATA_COMPLETE_LEVELS = "save_game_data_complete_levels";
public var completedLevelKeys(get, set) : Vector<String>;
function get_completedLevelKeys() : Vector<String>
return Reflect.field(this.data, DATA_COMPLETE_LEVELS);
function set_completedLevelKeys(values : Vector<String>) : Vector<String>
{
if(null != values)
Reflect.setField(this.data, DATA_COMPLETE_LEVELS, values);
return values;
}
public static inline var DATA\u COMPLETE\u LEVELS=“save\u game\u DATA\u COMPLETE\u LEVELS”;
公共var completedlevelkey(get,set):向量;
函数get_completedLevelKeys():Vector
返回Reflect.field(this.data、data\u COMPLETE\u LEVELS);
函数集\u completedLevelKeys(值:Vector):Vector
{
if(null!=值)
Reflect.setField(this.data、data\u COMPLETE\u LEVELS、value);
返回值;
}
你当然是这个意思(Haxe 3+)
函数get_completedLevelKeys():Vector
函数集\u completedLevelKeys(值:Vector):Vector
你当然是这个意思(Haxe 3+)
函数get_completedLevelKeys():Vector
函数集\u completedLevelKeys(值:Vector):Vector
你当然是这个意思(Haxe 3+)
函数get_completedLevelKeys():Vector
函数集\u completedLevelKeys(值:Vector):Vector
你当然是这个意思(Haxe 3+)
函数get_completedLevelKeys():Vector
函数集\u completedLevelKeys(值:Vector):Vector
专用风险值是什么?你是对的,我可能想检查get/set中是否为null,并在设计类时相应地更新私有变量。但是在实现它时,我意识到我不需要更新这个var,只需要更新.data对象。我会考虑删除私人声明。谢谢你的回答!私有var用于什么?你是对的,我可能想检查get/set中是否为null,并在设计类时相应地更新私有变量。但是在实现它时,我意识到我不需要更新这个var,只需要更新.data对象。我会考虑删除私人声明。谢谢你的回答!私有var用于什么?你是对的,我可能想检查get/set中是否为null,并在设计类时相应地更新私有变量。但是在实现它时,我意识到我不需要更新这个var,只需要更新.data对象。我会考虑删除私人声明。谢谢你的回答!私有var用于什么?你是对的,我可能想检查get/set中是否为null,并在设计类时相应地更新私有变量。但是在实现它时,我意识到我不需要更新这个var,只需要更新.data对象。我会考虑删除私人声明。谢谢你的回答!你是对的,虽然你最好把它写成对已经被接受的答案的评论你是对的,虽然你最好把它写成对已经被接受的答案的评论你是对的,虽然你最好把它写成对已经被接受的答案的评论你是对的,尽管您最好将此作为已接受答案的注释