我是flash新手,下面是我的脚本,我有3个文本输入框,name1、name2、name3和3个动态文本,output1、output2、output3。一旦用户在框中输入文本,它在动态输出文本中的显示应该完全相同。它适用于第一个,但不适用于第二个和第三个。我以不同的方式重命名了变更处理程序以消除编译错误,但现在只有第一个可以工作。如果我想有多个文本框入口,有更好的方法吗?
name1.addEventListener(Event.CHANGE, changeHandler);
function changeHandler(e:Event):void
{
output1.text = name1.text
}
name2.addEventListener(Event.CHANGE, changeHandler);
function changeHandler1(e:Event):void
{
output2.text = name2.text;
}
name3.addEventListener(Event.CHANGE, changeHandler);
function changeHandler2(e:Event):void
{
output3.text = name3.text;
}
您忘记更改后两个addEventListener()
调用中侦听器函数的名称。它当前对所有三个事件调用changeHandler()
。
你应该有:
name2.addEventListener(Event.CHANGE, changeHandler1);
name3.addEventListener(Event.CHANGE, changeHandler2);
您可以创建一个类来管理输入文本字段与输出文本字段的连接:
package
{
import flash.text.TextField;
import flash.events.Event;
public class TextBinder extends Object
{
// vars
private var _input:TextField;
private var _output:TextField;
/**
* Joins input with output
* @param inp The input text field
* @param outp The output text field
*/
public function join(inp:TextField, outp:TextField):void
{
_input = inp;
_output = outp;
_input.addEventListener(Event.CHANGE, _change);
}
/**
* Event.CHANGE
*/
private function _change(e:Event):void
{
_output.text = _input.text;
}
}
}
现在你可以循环浏览你的文本字段,并使用以下方法加入它们:
var tb:TextBinder = new TextBinder();
tb.join(name1, output1);