Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.02.2015, 14:44
DenDobriy вне форума Посмотреть профиль Отправить личное сообщение для DenDobriy Найти все сообщения от DenDobriy
  № 1  
Ответить с цитированием
DenDobriy

Регистрация: Dec 2013
Сообщений: 35
По умолчанию Анимация

Всем привет.
Помогите разобраться.
У меня есть мувиклип в первом кадре сцены в котором другой мувиклип с анимацией блика через маску.
В клипе движения блика в последнем кадре такой код:
Код AS3:
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() в первом кадре клипа блик, то команда работает.
?
Только не пишите,что правильно надо все в классах делать(

Старый 15.02.2015, 15:55
Ёлочка вне форума Посмотреть профиль Отправить личное сообщение для Ёлочка Найти все сообщения от Ёлочка
  № 2  
Ответить с цитированием
Ёлочка
 
Аватар для Ёлочка

Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
Код AS3:
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.swf   (2.3 Кб)

light.zip
Вложения
Тип файла: swf light.swf (2.3 Кб, 103 просмотров)
__________________
В лесу родилась ёлочка, в лесу она росла! Зимой и летом...

Старый 15.02.2015, 15:55
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
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!

Старый 15.02.2015, 16:59
DenDobriy вне форума Посмотреть профиль Отправить личное сообщение для DenDobriy Найти все сообщения от DenDobriy
  № 4  
Ответить с цитированием
DenDobriy

Регистрация: Dec 2013
Сообщений: 35
Спасибо за помощь,Zebestov. Спасибо,Елочка.
Действительно,у меня много косяков. Но это, в принципе, не проблема.
Проблема, что команда stop() в любом кадре, кроме первого почему-то не останавливает анимацию
???
Есть мысли, что не так?
Если я уберу таймер и оставлю в последнем кадре просто команду stop() анимация не прекращается.

Добавлено через 24 минуты
Я слабо разбираюсь во Flash( Сейчас написал для проверки trace(currentFrame) и выводится всегда 1.
Написал тоже в главном клипе, тоже самое выводится 1. Короче код написанный внутри клипа не работает, потому что кадры у меня читаюся из главной сцены. Я так понял:надо теперь все экземплярам клипа присвоить имена и писать код в 1м кадре главной сцены, обращаясь по именам. А почему так не работает, можете пояснить?

Старый 15.02.2015, 18:24
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Это происходит, когда есть вложенные мувики. Команда parentMC.stop() останавливает смену кадров только в этом объекте и ничего не говорит его детям, в которых спокойно себе продолжается смена кадров.
__________________
Поймай яблоко 2!

Старый 15.02.2015, 23:33
DenDobriy вне форума Посмотреть профиль Отправить личное сообщение для DenDobriy Найти все сообщения от DenDobriy
  № 6  
Ответить с цитированием
DenDobriy

Регистрация: Dec 2013
Сообщений: 35
Так я в обьекте указываю stop(). Т.е. в самом последнем вложенном мувике. Я даже попробовал this.stop(). В нем же должно воспроизведение останавливаться? В этом мувике 100 кадров. В первом кадре stop() работает, во 2м и далее-нет, почему-то.

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:36.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.