0

名前のプロパティを持つクラス Einstein があるプロジェクトとしての紹介を行っています。name プロパティはプライベートですが、ゲッターとセッターがあります。mxml ファイルには、ラベルとボタンがあります。ラベルには、Einstein オブジェクトの名前が表示されます。ボタンをクリックすると、Einstein オブジェクトの名前が変更されます。ラベルは name プロパティにバインドされているため、更新する必要がありますが、そうではありません。以下は、Einstein as ファイルと mxml ファイルのうち、問題に関係している可能性がある部分です。

    [Bindable]
public class Einstein
{
    private var name:String;

    public function Einstein(name:String)
    {setName(name);}

    public function getName():String
    {return name;}

    public function setName(sentName:String):void
    {this.name = sentName;}
}

        <![CDATA[
        [Bindable]
        var pEinstein: Einstein = new Einstein("Brighid");
    ]]>

        <s:Label id="nameTag" text="{pEinstein.getName()}" fontSize="24"/>
        <s:Button content="change the name">
            <s:click>
                pEinstein.setName("Freyja");
            </s:click>

tldr; ラベルが更新されるはずのときに更新されない

4

2 に答える 2

-1

自動バインドは、「通常の」メソッドでは機能しません。ゲッター/セッターには対応しますが、ゲッターとセッターにはアクションスクリプト構文を使用する必要があります。(get/set 関数は、Java で使用する構文のように見えます。これは actionscript で機能しますが、mxml コンパイラによって get/set として認識されません)

get/set 関数を次のように変更します。

public function get name():String
{return name;}

public function set name(sentName:String):void
{this.name = sentName;}

クリック ハンドラーの呼び出しを次のように変更します。

pEinstein.name = "Freyja";

ラベルを次のように変更します。

<s:Label id="nameTag" text="{pEinstein.name}" fontSize="24"/>
于 2013-04-16T20:06:30.647 に答える