出于某种原因,我无法修改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的方式有关?感谢任何帮助,谢谢。
答案 0 :(得分:1)
然而,我无法重现你的问题而你却错过了一个;和一个超级电话。
试试这段代码。
package;
import nme.display.Sprite;
import nme.display.MovieClip;
class HelloWorld extends MovieClip
{
public function new( )
{
super();
var tempField:BitmappedTextField = new BitmappedTextField();
trace( tempField.textWidth );
}
}
class BitmappedTextField extends Sprite
{
public var textWidth:Int;
public function new( )
{
super();
textWidth = 55;
init( );
}
public function init( )
{
textWidth = 777;
}
}