我需要一些帮助。在Flash中,我从组件面板设计了一个简单的按钮。我给它实例名称为btn_one。我试图做的是每次用户点击按钮我希望按钮将文本从发送更改为下一个。但是,你是怎么做到的?
不幸的是,我对as3的了解有限。他们是as3按钮的许多教程,但我没有找到任何关于这个。如果你们能给我一些代码示例或者给我一些教程链接,我将非常感激。
由于
答案 0 :(得分: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中以便于参考。