0

何らかの理由で、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 を使用する方法に関係があるのでしょうか? どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

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; 
        }
}
于 2013-03-26T11:34:40.373 に答える