Haxe:领域的回报价值

时间:2013-03-25 04:16:03

标签: function variables return field 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的方式有关?感谢任何帮助,谢谢。

1 个答案:

答案 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; 
        }
}