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

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

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

Регистрация: Feb 2011
Сообщений: 100
По умолчанию Последовательное выполнение анимаций TweenLite

Помогите разобраться, я запутался. Мне нужна очередь, в которую можно класть разные TweenLite, чтобы они выполнялись:некоторые последовательно, некоторые одновременно (пачкой, как будо это один экземпляр TweenLite в очереди, они добавляются одномоментно). После завершения анимации эти TweenLite должны удаляться из очереди.
Т.е. это очередь она одна, глобальная. А добавление экземпляров TweenLite в неё происходит на всём протяжении работы флешки. И вот, если очередь пустая - экземпляр должен сразу запускаться. Если в очереди есть ещё элементы - должен ждать. прока они все выполнятся, а потом выполняться. Я попробовал TimelineLite append() и appendMultiple() (как раз для пачек). Но там, если одна анимация уже прошла и через какое-то время добавляешь вторую - она не запускается.

Старый 21.12.2012, 16:00
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Так создавайте каждый раз новый таймлайн для пачки. инсерт - распараллеливает, аппенд добавляет в конец анимации.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 21.12.2012, 16:10
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 3  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Нет, мне нужна одна общая очередь. Вообще зря я про пачки написал, они уже другая история.
Сначала мне надо разобраться с одиночными элементами. Вот пример:
Код AS3:
package 
{
	import com.greensock.TimelineLite;
	import com.greensock.TweenLite;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.utils.setTimeout;
 
	/**
	 * ...
	 * @author Dmitry Minaev
	 */
	public class Main extends Sprite 
	{
		private var _line: TimelineLite = new TimelineLite();
		private var s: Sprite = new Sprite();
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// рисуем точку, которую будем двигать по таймлайну
			s.graphics.beginFill(0);
			s.graphics.drawCircle(0, 0, 3);
			s.x = 100;
			s.y = 200;
			addChild(s);
			// иммитируем работу очереди
			// первое действие происходит сразу - точка передигается правее
			_line.append( new TweenLite(s, 1, { x: 130 } ) );
			// второе действие происходит когда-то потом, неизвестно когда, эмулируем его задержкой
			setTimeout(_secondMove, 3000);
		}
		// двигаем точку левее. Вот этот код не срабатывает
		private function _secondMove(): void {
			_line.append(new TweenLite(s, 1, { x: 80 } ) );
		}
	}
}

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
ну play() повторно позвать надо, наверно.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 21.12.2012, 16:17
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 5  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Да, вроде заработало, спасибо.

Добавлено через 34 минуты
Всё равно работает неправильно.
Если задать ощутимый промежуток, например
Код AS3:
setTimeout(_secondMove, 8000);
Будет мгновенное перемещение. Это видимо как-то связано с длиной самого таймлайна. Продолжаем копать).

Старый 21.12.2012, 16:56
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 6  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Если нужно просто последовательно - я бы в конвеер Потапенко загнал.
А уж если бы потребовалось, чтобы промежутки анимаций накладывались друг на друга и как-то сложнее реагировали - тогда бы уже подключал мозг или внимательнее вчитывался в доки по твину.

Старый 21.12.2012, 17:02
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 7  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Нужно последовательное воспроизведение пачек. В пачке - 1 и более твинов.
Что за конвейер Потапенко? Гугл выводит только левые ссылки, можно ссылку на библиотеку?

Старый 21.12.2012, 17:02
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Кстати да у эффектов есть параметр задержки и инсертить можно на определенное время.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 21.12.2012, 17:22
botbot вне форума Посмотреть профиль Отправить личное сообщение для botbot Найти все сообщения от botbot
  № 9  
Ответить с цитированием
botbot

Регистрация: Feb 2011
Сообщений: 100
Пробовал инсерт
Код AS3:
			var time: Number = _line.duration > _line.currentTime ? _line.duration : _line.currentTime;
			_line.insert( new TweenLite(s, 2, { x: 130 } ), time );
			_line.play();
Не работает.

Старый 21.12.2012, 17:30
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Что за конвейер Потапенко? Гугл выводит только левые ссылки, можно ссылку на библиотеку?
Ды да. Надо было сразу ссылку кинуть - из гугла оригинал исчез пару лет назад.

http://www.flasher.ru/forum/blog.php?b=528
(там внизу zip-архив)

Как-то так будет выглядеть:
Код AS3:
_conveyor = new Conveyor();
// Цепочка твинов:
_conveyor.add(tweenTo, [.5, { x: 130 }]);
_conveyor.add(tweenTo, [.5, { x: 140 }]);
_conveyor.add(tweenTo, [1.5, { x: 150 }]);
_conveyor.play();
 
private void tweenTo(duration:Number, vars:Object)
{
    _conveyor.stop();// Тормознули
    vars.onComplete = onTweenComplete;
    TweenLite.to(duration, vars);
}
private void onTweenComplete()
{
    _conveyor.play();// Пошёл следующий твин
}

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

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

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


 


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


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