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
    }
}

它的作用:您将按钮实例声明为 GenericTextButton 后代,而不是 SimpleButton,然后您将有setText()可用的方法将该按钮中的所有文本立即更改为您提供的任何文本。它枚举 SimpleButton 的内部结构,抓取任何 TextFields,并将其存储在 Vector 中以便于参考。

于 2012-11-20T13:42:58.287 回答