0

助けが必要です。Flash では、コンポーネント パネルから単純なボタンを設計しました。btn_one というインスタンス名を付けました。私がやろうとしているのは、ユーザーがボタンをクリックするたびに、ボタンのテキストを送信から次へ変更することです。しかし、どうやってこれを行うのですか?

残念ながら、as3 に関する私の知識は限られています。それらはas3ボタンの多くのチュートリアルですが、これに関しては見つかりませんでした。コードの例をいくつか示したり、チュートリアルのリンクを提供してくれたりすると、本当にありがたいです。

ありがとう

4

1 に答える 1

1

SimpleButtons のテキスト フィールドについて何かしようとして、次のコードを思いつきました。それが役立つことを願っています。

public class GenericTextButton extends flash.display.SimpleButton { 
    public var buttonText:String;
    private var tfs:Vector.<TextField>;    
    public function GenericTextButton():void 
        {
        tfs=new Vector.<TextField>();
        var tc:DisplayObjectContainer;
        var i:int;
        // now let's init embedded TFs
        // trace((upState as DisplayObjectContainer).numChildren); // wow there's property available! YES
        if (upState is DisplayObjectContainer) {
            tc=(upState as DisplayObjectContainer);
            for (i=0;i<tc.numChildren;i++) 
                if (tc.getChildAt(i) is TextField) tfs.push(tc.getChildAt(i) as TextField);
        } // now same with overState and downState
        if (overState is DisplayObjectContainer) {
            tc=(overState as DisplayObjectContainer);
            for (i=0;i<tc.numChildren;i++) 
                if (tc.getChildAt(i) is TextField) tfs.push(tc.getChildAt(i) as TextField);
        }
        if (downState is DisplayObjectContainer) {
            tc=(downState as DisplayObjectContainer);
            for (i=0;i<tc.numChildren;i++) 
                if (tc.getChildAt(i) is TextField) tfs.push(tc.getChildAt(i) as TextField);
        }
        // trace(name+' has '+tfs.length+' textfields'); // 3 !!!! Unbelieveable, but true
    }
    public function setText(the_text:String):void {
        for (var i:int=0;i<tfs.length;i++) tfs[i].text=the_text; // and NOW we can do as simple as this
    }
}

機能: ボタン インスタンスを SimpleButton の代わりに GenericTextButton の子孫として宣言するとsetText()、そのボタンのすべてのテキストを指定したものに即座に変更するメソッドが利用可能になります。SimpleButton の内部構造を列挙し、そこにある TextField を取得して、簡単に参照できるように Vector に格納します。

于 2012-11-20T13:42:58.287 に答える