как прекратить запускать два события за раз в текстовой области spark (as3 + flex4) - PullRequest
0 голосов
/ 12 октября 2011

textChanged и valueCommit оба слушателя событий присоединяются с текстовой областью искры следующим образом:

addEventListener("textChanged", 
    function(event:Event):void {                                    
        colorize();                 
},false,0,true);

addEventListener("valueCommit",
    function(event:Event):void {                    
        colorize();                 
},false,0,true);

если я наберу что-нибудь в textarea, то эта функция colorize () вызывается дважды.Как я могу остановить это, чтобы оба события не запускались вместе.Просьба помочь

1 Ответ

1 голос
/ 12 октября 2011

Если вы хотите слушать печатание, почему у вас два слушателя? Если вам действительно нужны два слушателя, вам нужно поставить colorize в очередь setTimeout вместо прямого вызова:

import flash.utils.setTimeout;

private var colorizeQueued:Boolean = false;
private function queueColorize():void
{
    if (colorizeQueued)
        return;

    colorizeQueued = true;
    setTimeout(function():void
    {
        // Process for real and note update
        colorize();
        colorizeQueued = false;
    }, 100);
}


addEventListener("textChanged", 
    function(event:Event):void {                                    
        queueColorize();                 
},false,0,true);

addEventListener("valueCommit",
    function(event:Event):void {                    
        queueColorize();           
},false,0,true);
...