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