ActionScript 3.0 textInput和Display

时间:2011-06-21 01:06:07

标签: flash actionscript textbox adobe textinput

我是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;
}

1 个答案:

答案 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);