0
出于某种原因,我无法修改Haxe中某个字段的值。当然,这似乎并没有影响我所有的领域,只是这个。这是(我很确定的)适用的代码。首先,在父类:Haxe:字段返回值
class TopMenu extends Sprite
{
public function new()
{
super();
init();
}
private function init()
{
var tempField:BitmappedTextField = new BitmappedTextField("File", 100, false);
trace(tempField.textWidth);
}
}
然后,在子类:
class BitmappedTextField extends Sprite
{
private var _fieldText:String;
private var _fieldWidth:Int;
private var _addToStage:Bool;
public var textWidth:Int;
public function new(thisText:String, thisWidth:Int = 100, adTStg:Bool = true)
{
super();
_fieldText = thisText;
_fieldWidth = thisWidth;
_addToStage = adTStg;
textWidth = 55;
init();
}
public function init()
{
textWidth = 777;
}
}
我期望trace
语句返回777
,而是它总是返回55
。事实上,无论我做什么,我似乎都无法修改构造函数类之外的字段,然后通过父类来检索该值。有一件可怕的事很简单,我必须失踪,但我无法弄清楚。也许它与Haxe使用getter和setter的方式有关?任何帮助表示赞赏,谢谢。
此代码在轨迹中正确返回777。为什么你有HelloWorld扩展MovieClip?我只问,因为在我的情况下,父母和孩子班都扩展了雪碧,我想知道这是否可能是我的问题的来源。我会在我的问题中添加更多代码;我试图保持简短。 – 2013-03-27 13:45:15
那么,原来的代码只是为了表明我遇到了什么样的问题;修改后的代码更能代表我的实际程序。不过,我仍然有同样的问题。 Sprite有什么膨胀?有什么地方我可以阅读更多关于这个?我只是想知道,因为我认为Sprite会比MovieClip更轻。 – 2013-03-28 13:42:45
那么选择什么扩展到你的初始阶段通常是一个非问题,实际上MovieClip扩展了Sprite,所以我错了。在课堂上阅读它,就像我刚刚纠正自己。像intellij想法这样的带有Goto Definition的IDE使得这更容易。你可能会发现看看一些关于显示列表概念的文章很有帮助http://active.tutsplus.com/tutorials/actionscript/as3-101the-display-list/这里讲的是更多的http:/ /www.adobe.com/devnet/flash/quickstart/display_list_programming_as3.html – imp 2013-03-29 01:42:13