我是flash的新手,下面是我的脚本,我有3个textinput框,name1,name2,name3和3个动态文本,output1,output2,output3。一旦用户输入框中的文本,它在动态输出文本中应该看起来完全相同。它适用于第一个,但不适用于第二个和第三个。我以不同方式重命名changehandler以删除编译错误,但现在只有第一个工作。如果我想要多个文本框主菜,有更好的方法吗?
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;
}
答案 0 :(得分:1)
您忘记在后两个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);