![]() |
Возникло недопонимание интервальных функций
Пример-программа из библии по AS2.0, где генерируются мерцающие буквы в случайном месте сцены. В среде авторских работ создается динамическое текстовое поле, куда монтируется несколько букв определенного шрифта для дальнейшего программного доступа к ним.
Далее пишется следующий код: Код:
function displayLetter():Void {Код:
var nDepth:Number = this.getNextHighestDepth();Стал искать серьезные отличии в кодах и увидел, что у меня запуск интервальных функций инициализирован не Код:
tLetter.nInterval = setInterval(this, "alphaFade", 10, tLetter);Код:
tLetter.nInterval = setInterval(alphaFade, 10, tLetter);Т.е. в книге говорится, что синтаксис запуска функций: setInterval(functionName, interval, params ); объектных методов: setInterval(objectName, "objectMethod", interval, params); Посмотрел мануал, действительно, есть синтаксис setInterval(this, "functionName", interval, params); - я так понимаю, что он идентичен синтаксису setInterval(functionName, interval, params );, но почему же тогда при синтаксисе через this все работает, а при другом нет? Объясните разницу, если она есть, плиз. Извините, что так много букв...))) |
Все упирается в область видимости имен. Если в функции displayLetter () есть ссылка с помощью this, то в методе setInterval () эта ссылка даст другое значение. Когда используешь такую сигнатуру:
Код:
setInterval(objectName, "objectMethod", interval, params); |
Извините, ничего не понял..((
|
|
Если Вы проанализируете работу вот этого кода то поймете почему.
Код:
myObject:Object = {}; |
я примерно понял, но осталось уяснить какую роль играет this в самом первом вызове интервальной функции var nDisplayInterval:Number = setInterval(this, "displayLetter", 1); - чем this там является?
Цитата:
опять же тут все ясно: создается объект, ему присваивается метод, который затем и вызывается в интервале - но это никак меня не приблизило к пониманию моего вопроса..)) |
Код:
забыли var в объявлении myObject..)) |
Если здесь
Код:
var nDisplayInterval:Number = setInterval(this, "displayLetter", 1);вот эта строчка Код:
this.createTextField("tLetter" + nDepth, nDepth, nRandomX, nRandomY, 0, 0);Код:
setInterval.createTextField() |
Спасибо! Разобрался..))
|
Цитата:
|
| Часовой пояс GMT +4, время: 20:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.