【问题标题】:Flex text change eventFlex 文本更改事件
【发布时间】:2010-04-08 15:45:45
【问题描述】:

我正在跟踪 textArea 的文本变化的速度。如果它的变化快于 500 毫秒,那么我不想做任何事情,但如果它在 500 毫秒内没有变化,我想调用一个方法。 我试过这样:

public function textchangeListener(e : Event):void
        {
            if(((new Date).getTime() - changeTime)>500)
            {
                prepareText();
            }

            changeTime = (new Date).getTime();
        }

此方法是文本更改的事件处理程序。 但问题是,如果它仅在 500 毫秒内发生变化并且之后它没有变化,那么我的方法将不会被调用。我这样做是为了获得更好的性能,因此仅当用户停止输入 500 毫秒时才会调用 prepareText()。

【问题讨论】:

    标签: apache-flex actionscript-3 performance time


    【解决方案1】:

    这个怎么样...

    一旦获得第一个文本更改事件,您就可以调用类似 textTimeOut() 的过程。它基本上会像这样工作。

    function textTimeOut():void
    {
        start a timer for 500 ms
        set an event listener for it (your prepareText() function)
        if textTimeOut is called again before the timer gets to 0,
            reset the timer to 500 ms
    }
    

    【讨论】:

      【解决方案2】:

      我会在事件处理程序中使用 setTimeout 并在每次更改时重置它:

      var changeTimeout:Number = -1
      function handler(e:Event):void {
          if(changeTimeout != -1)
              clearTimeout(changeTimeout)
          changeTimeout = setTimeout(function():void{
              changeTimeout = -1
              prepareText();
          }, 500)
      }
      

      【讨论】:

        【解决方案3】:

        所以我用了一个计时器。感谢您的建议。最终结果是这样的:

            protected var timer:Timer = new Timer(300);
        
        public function AdvancedTextArea()
                {
                    super();
                    this.addEventListener(Event.CHANGE,textchangeListener);
                    timer.addEventListener(TimerEvent.TIMER,prepareText);
                    timer.repeatCount = 1;
        
                }
        public function textchangeListener(e : Event):void
                {
                    if(timer.running)
                    {
                        timer.stop();
                    }
                    timer.start();
        
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-18
          • 2014-01-26
          • 2011-10-09
          • 2011-08-28
          • 2017-04-14
          • 2011-10-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多