2013-03-23 44 views
0

我在文本框中使用TextEvent.TEXT_INPUT事件侦听器将框中的条目拆分为字符数组,但是当我尝试使用事件侦听器跟踪该数组时在文本框中显示倒数第二个字符。滞后当使用TextEvent.TEXT_INPUT

e.g:

我输入 “你好”,并输出给了我 “地狱”。然后我将它改为“helloq”,输出给我“你好”。

我该如何解决这个问题?我尝试添加另一个只能追踪,但没有区别。谢谢。

代码(搜索框的文本框,splitSearch是数组):

searchBox.addEventListener(TextEvent.TEXT_INPUT, splitBox); 
function splitBox(e:TextEvent):void{ 
    splitSearch = searchBox.text.split(""); 
} 
searchBox.addEventListener(TextEvent.TEXT_INPUT, split); 
function split(e:TextEvent):void{ 
    trace(splitSearch); 
} 
+1

请发布一些代码,如果我们无法看到它,我们无法纠正。 – puggsoy 2013-03-23 13:42:47

+0

在主帖子中添加了代码 – 2013-03-23 14:06:59

回答

2

你的问题是,文本字段前TEXT_INPUT事件触发更新。有两种方法可以得到你想要的结果。我认为最简单的方法是听取Event.CHANGE事件的文本字段。如果您真的想使用TEXT_INPUT,则需要分割文本字段的字符,然后将刚刚由用户输入的字符推送到数组中。这两种解决方案都很好

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.TextEvent; 
    import flash.text.TextField; 
    import flash.text.TextFieldType; 

    public class Main extends Sprite 
    { 
     private var searchBox:TextField; 
     private var splitSearch:Array; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      searchBox = new TextField(); 
      searchBox.border = true; 
      searchBox.type = TextFieldType.INPUT; 
      addChild(searchBox); 
      searchBox.addEventListener(TextEvent.TEXT_INPUT, splitBox); 
      searchBox.addEventListener(TextEvent.TEXT_INPUT, split); 

      searchBox.addEventListener(Event.CHANGE, onTxtChange); 
     } 

     private function splitBox(e:TextEvent):void{ 
      trace("splitBox() " + e.text + " " + searchBox.text); 
      splitSearch = searchBox.text.split(""); 
      splitSearch.push(e.text); 
     } 
     private function split(e:TextEvent):void{ 
      trace("split() " + splitSearch); 
     } 
     private function onTxtChange(e:Event):void 
     { 
      trace("onTxtChange() " + searchBox.text); 
     } 
    } 
} 
+0

这帮了我两个帐户,因为我正在寻找一个通过.as文件添加事件的好例子。它完美的工作,谢谢! – 2013-03-23 14:34:12