![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 7
|
Добрый вечер, коллеги.
Я потихонечку изучаю actionscript 3.0 и, чтобы ускорить этот процесс, много времени провожу на таких форумах и читаю разные темы. Сейчас я изучаю книгу Колина Мука "Actionscript 3.0 для Flash. Подробное руководство". Я понимаю, что кое-что упустил, и мне нужна помощь живого человека, чтобы залатать дыру в моих теоретических знаниях. В книге на странице 915 приведён следующий код (перепечатываю без комментариев от автора): package { import flash.display.MovieClip; import flash.utils.Timer; import flash.events.TimerEvent; public class Star extends MovieClip { private var timer:Timer; public function Star() { timer = new Timer(100, 0); timer.addEventListener(TimerEvent.TIMER, timerListener); timer.start(); } private function timerListener(e:TimerEvent) { randomFade(); } private function randomFade():void { alpha = Math.random(); } public function dospose():void { timer.stop(); } } } Программа каждые 50 миллисекунд меняет значение прозрачности для каждой конкретной звезды отдельно. => Функция-приёмник "timerListener()" зарегистрирована в объекте Timer данного экземпляра класса Star. => У объекта события, передаваемого в функцию, есть переменная экземпляра "target", которая указывает на объект Timer. => Функция-приёмник не знает, таймер какого именно экземпляра класса Star вызвал эту функцию. => Почему тогда переменная alpha из функции randomFade() знает, для какой именно звезды (экземпляра класса Star) менять степень прозрачности? Когда я раздумывал над этой проблемой, у меня появилась догадка, что функция randomFade, это метод экземпляра, а значит она как-то должна знать, таймер какого именно экземпляра привёл к её вызову. Но это только догадка. Чтобы у меня в голове не возникло непоправимых пробелов в знаниях, разъясните мне пожалуйста поподробнее, что здесь да как. В чём фишка? Почему переменная alpha меняется именно для того экземпляра, таймер которого привел к вызову функции, меняющей эту переменную? |
![]() |
Часовой пояс GMT +4, время: 23:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|