![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2014
Сообщений: 27
|
Ожидаемым результатом является следующее: в основном классе Main через определенный промежуток времени происходит вызов функции, которая отображает экземпляр дополнительного класса Sequence, внутри которого происходит отображение MovieClip`ов по очереди с задержкой с эффектом transitions Fade.
Проблема заключается в том, что объекты из класса Sequence: 1. Возникают резко, без эффекта в начале 2. Появляются не по очереди, а вначале первые два одновременно и затем третий По логике вроде все верно, возможно проблема в неверной организации кода? Прошу подсказать. Основной класс Main: package { import flash.display.MovieClip; import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; public class Main extends MovieClip { private var timerEvent:Timer = new Timer(2000,1); private var sequence:Sequence = new Sequence(); public function Main() { timerEvent.start(); timerEvent.addEventListener(TimerEvent.TIMER, timerEventHandler); } public function timerEventHandler(event:TimerEvent):void { sequenceHandler(); } public function sequenceHandler():void { sequence.x = 0; sequence.y = 0; this.addChild(sequence); } } } package { import flash.display.MovieClip; import fl.transitions.*; import flash.utils.Timer; import flash.events.TimerEvent; public class Sequence extends MovieClip { private var one:One = new One(); private var oneTimer:Timer = new Timer(1000,1); private var two:Two = new Two(); private var twoTimer:Timer = new Timer(2000,1); private var three:Three = new Three(); private var threeTimer:Timer = new Timer(3000,1); public function Sequence() { one.x = 0; one.y = 0; TransitionManager.start(one, {type:Fade, direction:Transition.IN, duration:20}); oneTimer.start(); oneTimer.addEventListener(TimerEvent.TIMER, oneHandler); two.x = 100; two.y = 0; TransitionManager.start(two, {type:Fade, direction:Transition.IN, duration:20}); twoTimer.start(); twoTimer.addEventListener(TimerEvent.TIMER, twoHandler); three.x = 200; three.y = 0; TransitionManager.start(three, {type:Fade, direction:Transition.IN, duration:20}); threeTimer.start(); threeTimer.addEventListener(TimerEvent.TIMER, threeHandler); } public function oneHandler(event:TimerEvent):void { this.addChild(one); } public function twoHandler(event:TimerEvent):void { this.addChild(two); } public function threeHandler(event:TimerEvent):void { this.addChild(three); } } } Обнаружил ошибку. Если установить таймер в классе Main в значение 0, то проблема исчезает. Следовательно проблема в том что таймеры в Main и в Sequence начинают отсчет одновременно. Но как добиться поставленной задачи? 1. Срабатывает таймер в Main 2. Таймер в Main запускает функцию добавления экземпляра класса Sequence 3. В классе Sequence последовательно срабатывают таймеры запускающие добавление объектов в список отображения Последний раз редактировалось lesnoj; 16.03.2014 в 14:51. |
|
|||||
|
Регистрация: Mar 2014
Сообщений: 27
|
olexandr, спасибо за подсказку - проблема решена.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|