|
|
|||||
Регистрация: Dec 2013
Сообщений: 35
|
Анимация
Всем привет.
Помогите разобраться. У меня есть мувиклип в первом кадре сцены в котором другой мувиклип с анимацией блика через маску. В клипе движения блика в последнем кадре такой код: var delay:int=Math.floor(Math.random()*5000); var timer:Timer = new Timer(delay); timer.addEventListener(TimerEvent.TIMER, timerHandler); function timerHandler(event:TimerEvent):void { //play(); } if (currentFrame==totalFrames) { stop(); timer.start(); } Но почему-то от воспроизводится в любом случае. команда stop(); не учитывается ни в каком кадре клипа блика,кроме первого. Если stop() в первом кадре клипа блик, то команда работает. ? Только не пишите,что правильно надо все в классах делать( |
|
|||||
Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
|
import flash.display.MovieClip; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; var sword:MovieClip; var light:MovieClip = sword.light; var timer:Timer = new Timer( 1, 1 ); timer.addEventListener( TimerEvent.TIMER_COMPLETE, playLight ); this.addEventListener( Event.ENTER_FRAME, update ); function playLight( e:TimerEvent ):void { light.gotoAndPlay( 1 ); trace( "light play" ); } function update( e:Event ):void { if ( light.currentFrame == light.totalFrames ) { light.gotoAndStop( 0 ); timer.delay = Math.random() * 1000 + 1000; timer.reset(); timer.start(); trace( "light stop", timer.delay ); } } light.zip
__________________
В лесу родилась ёлочка, в лесу она росла! Зимой и летом... |
|
|||||
Lorem ipsum
|
var delay:int = Math.floor(Math.random() * 5000); var timer:Timer = new Timer(delay); // Проверять на "конец" следует в каждом кадре, // в этом была основная ошибка. addEventListener(Event.ENTER_FRAME, enterFrameHandler); timer.addEventListener(TimerEvent.TIMER, timerHandler); function timerHandler(event:TimerEvent):void { play(); } function enterFrameHandler(event:Event):void { if (currentFrame == totalFrames) { // Если сделать просто stop(), то после остановки проверка на "конец" // будет всегда давать true и команда start() будет вызываться // все пять секунд. С одной стороны ничего страшного - отработает // команда лишь первый раз (согласно документации). С другой - не комильфо. gotoAndStop(0); timer.start(); } }
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Dec 2013
Сообщений: 35
|
Спасибо за помощь,Zebestov. Спасибо,Елочка.
Действительно,у меня много косяков. Но это, в принципе, не проблема. Проблема, что команда stop() в любом кадре, кроме первого почему-то не останавливает анимацию ??? Есть мысли, что не так? Если я уберу таймер и оставлю в последнем кадре просто команду stop() анимация не прекращается. Добавлено через 24 минуты Я слабо разбираюсь во Flash( Сейчас написал для проверки trace(currentFrame) и выводится всегда 1. Написал тоже в главном клипе, тоже самое выводится 1. Короче код написанный внутри клипа не работает, потому что кадры у меня читаюся из главной сцены. Я так понял:надо теперь все экземплярам клипа присвоить имена и писать код в 1м кадре главной сцены, обращаясь по именам. А почему так не работает, можете пояснить? |
|
|||||
Lorem ipsum
|
Это происходит, когда есть вложенные мувики. Команда parentMC.stop() останавливает смену кадров только в этом объекте и ничего не говорит его детям, в которых спокойно себе продолжается смена кадров.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Dec 2013
Сообщений: 35
|
Так я в обьекте указываю stop(). Т.е. в самом последнем вложенном мувике. Я даже попробовал this.stop(). В нем же должно воспроизведение останавливаться? В этом мувике 100 кадров. В первом кадре stop() работает, во 2м и далее-нет, почему-то.
|
Часовой пояс GMT +4, время: 21:36. |
|
« Предыдущая тема | Следующая тема » |
|
|