Если вы используете callLater () , вы можете «захватывать» переменные в текущей области, но также выполнять их после распространения изменения в width
.Например:
callLater(function():void
{
trace("label width in callLater = ", lb.width);
});
ОБНОВЛЕНИЕ : я думаю, что мне нужно немного подробнее остановиться, чтобы прояснить, что я имел в виду под "захватом" значений.Это можно сделать с помощью следующей простой иллюстрации:
callLater(function(prevWidth:Number):void
{
trace("previous label width in callLater = ", prevWidth); // 8
trace("label width in callLater = ", lb.width); // 64
}, [lb.width]);
Как показывает пример, параметры, которые вы передаете через массив args
(т. Е. [lb.width]
, который становится prevWidth
)принять текущее значение (т. е. они передаются по значению), тогда как переменные, на которые вы делаете прямую ссылку в функции, фактически находятся в области видимости при выполнении функции (т. е. замыкание ).
Вы можете сделать это и с прослушивателем событий, но с callLater () это немного проще.