#actionscript-3 #events #apache-flex #flex4 #flex-spark
#actionscript-3 #Мероприятия #apache-flex #flex4 #flex-spark
Вопрос:
Прослушиватель событий TextChanged и valueCommit присоединяются к текстовой области spark следующим образом:
addEventListener("textChanged",
function(event:Event):void {
colorize();
},false,0,true);
addEventListener("valueCommit",
function(event:Event):void {
colorize();
},false,0,true);
если я набираю что-либо в текстовой области, то эта функция colorize() вызывается дважды. Как я могу остановить это, чтобы оба события не запускались вместе. Пожалуйста, помогите
Ответ №1:
Если вы хотите прослушать ввод текста, зачем вам два слушателя? Если вам действительно нужны два прослушивателя, вам нужно поставить в очередь colorize
с помощью a 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);
Комментарии:
1. @N Rohler: Просто из любопытства, почему это не сработает с этим решением и без тайм-аута?
2. @AntonPetrov: В принципе,
queueColorize
метод делает это: если он вызывается в первый раз за некоторое время, он вызываетcolorize
. В противном случае он говорит: «Меня недавно вызывали, поэтому я ничего не собираюсь делать».3. Вы не поняли мой вопрос, но я понял, что хотел. Спасибо.