actionscript-3 - Adobe FlexのMXMLコンポーネントのセッターのオーバーライド

actionscript-3 apache-flex actionscript air adobe

ラベルコンポーネントのテキストセッターをオーバーライドしようとしていますが、動作がおかしい
時々super.textは機能し、時には機能しません!トレースは、私のコードにエラーがないことを示しています。

これが私のコードです:

import spark.components.Label;

public class LabelXX extends Label
{
    private var _initialText:String;
    private var _assignedText:String;
    public function LabelXX()
    {
        super();
    }

    override public function set text(value:String):void
    {
        if (!_initialText)
        {
            _initialText = value;
            super.text = value;
            trace("initial text = " + value);
        }else
        {
            _assignedText = value;
            super.text = _initialText + " " + _assignedText;
            trace("Now: " + _initialText + " " + _assignedText);
        }
        //this wont have any effect no matter what I do:
        //super.text = "test test test";
    }

    override public function get text():String
    {
        if (!_assignedText)
        {
            return "";
        }else
        {
            return _assignedText;
        }
    }

}


更新:ゲッターにコメントすると、正常に機能しますが、それでも意味がありません!

ありがとう
答え
おそらくスーパーget / setメソッドは、プロパティの値を保持するプライベート変数にアクセスしています。拡張クラスは、このプライベート変数にアクセスできません。スーパーを呼び出さないようにgetメソッドをオーバーライドする。 setメソッドで使用すると、奇妙なことが発生する場合があります。特に、親の何かがプライベート変数にアクセスし、get / setメソッドをバイパスしている場合。これは、悲しいことに、Flex Frameworkコードで時々発生します。だから、私はあなたのコードを次のようなものに作り直そうとするかもしれません:

private var _initialText:String;
private var _assignedText:String;

    override public function set text(value:String):void
    {
        if (!_initialText)
        {
            _initialText = value;
            super.text = value;
            trace("initial text = " + value);
        }else
        {
            _assignedText = value;
// change here to reference value not _assignedText
            super.text = _initialText + " " + value;
            trace("Now: " + _initialText + " " + value);
        }
        //this wont have any effect no matter what I do:
        //super.text = "test test test";
    }

    override public function get text():String
    {
        if (!_assignedText)
        {
            return "";
        }else
        {
// change here to reference super.text not _assignedText
            return super.text;
        }
    }
関連記事

string - AS3でのオブジェクトのシリアル化、文字列型が小さすぎてBLOBを保持できません

actionscript-3 - 配列をループし、各要素のプロパティを設定しますか?

flash - AS3-クラスからルートタイムラインで関数を呼び出す

actionscript-3 - ファイルのダウンロードAS3の進行状況バーを取得できません

actionscript-3 - リンクがスパークデータグリッド列でラップされていません

actionscript-3 - sound ByteArray ----> Soundオブジェクト

actionscript-3 - Flexカスタムコンポーネント、それを使用する最良の方法

arrays - アイテムを検索するとFlexドロップダウン選択が機能しない

actionscript-3 - ドロップシャドウ付きの空気2.6クロムレスウィンドウ

actionscript-3 - 遅延インスタンス化のためのFlexの強く型付けされたプロキシクラス