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

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

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

Регистрация: Mar 2009
Сообщений: 31
По умолчанию Зацикливание Tween

Ребята, подскажите пожалуйста. Такая проблема. Два объекта должны двигаться синхронно при помощи Tween. Но при этом движение должно повторятся. то есть, вот сработал Tween, объекты достигли определенной точки по y, и через некоторое время они должны пройти обратный путь, т.е. вернуться в свою первоначальную точку. Я решил это проделать с помощью таймера. Вот мой код:
Код AS3:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
 
var m:Boolean = true;
var motionTimer:Timer = new Timer(7000);
motionTimer.start();
motionTimer.addEventListener(TimerEvent.TIMER, motionList);
function motionList(e:TimerEvent):void{
	if(m==true){
		vniz();
		m=false;
	}else{
		vverh();
		m=true;
	}
	trace(container.y);
trace(fotka.y);
}
function vniz(){
var fotoTween:Tween = new Tween(fotka, "y", Strong.easeOut, fotka.y, 350, 3, true);
var containerTween:Tween = new Tween(container, "y", Strong.easeOut, container.y, 200, 3, true);
 
}
function vverh(){
var fotoTween2:Tween = new Tween(fotka, "y", Strong.easeOut, fotka.y, 150, 3, true);
var containerTween2:Tween = new Tween(container, "y", Strong.easeOut, container.y, 0, 3, true);
}
Этот код вроде бы и работает, но не совсем корректно. Иногда объекты останавливаются, не дойдя до нужной точки. Или бывает, container запаздывает за fotka. Объект container - это Sprite, а fotka - MovieClip.
Подскажите, может быть, как испаравить? Может и зацикливание как-то проще можно сделать? Или как-нибудь обоим объектам назначить один и тот же Твин, чтобы они двигались синхронно?

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
у Tween есть событие об окончании анимации, видимо это
Код AS3:
TweenEvent.MOTION_FINISH
(сам пользуюсь Tweener'ом поэтому точно не скажу)

подпишитесь на него, и при срабатывании добавляйте движение снова
__________________
low +

Старый 26.12.2009, 14:39
Captain QUAZAR вне форума Посмотреть профиль Отправить личное сообщение для Captain QUAZAR Найти все сообщения от Captain QUAZAR
  № 3  
Ответить с цитированием
Captain QUAZAR

Регистрация: Mar 2009
Сообщений: 31
Jewelz, да, но мне же нужно, чтообы обратное движение начиналось, например, через 5 сек., а при использовании TweenEvent.MOTION_FINISH оно у меня сразу начинается. Я попробовал и здесь таймер прикрепить, чтоб задержка была, но снова глючит у меня.
Код AS3:
var timer1:Timer = new Timer(8000);
timer1.start()
timer1.addEventListener(TimerEvent.TIMER, timerList);
function timerList(e:TimerEvent):void{
 
 
var tween1:Tween = new Tween(mc, "y", Strong.easeInOut, mc.y, 400, 3, true);
tween1.addEventListener(TweenEvent.MOTION_FINISH, tween1Fin);
function tween1Fin(e:TweenEvent):void{
	var timer2:Timer = new Timer(3000);
	var n:Number = 0;
	timer2.start();
	timer2.addEventListener(TimerEvent.TIMER, timer2List);
	function timer2List(e:TimerEvent):void{
			var ween2:Tween = new Tween(mc, "y", Strong.easeInOut, mc.y, 0, 3, true);
 
			timer2.removeEventListener(TimerEvent.TIMER, timer2List);
			}
}
}

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
значит у вас tween'ы съедаются gc, сделайте их не локальными переменными, а глобальными, то есть объявите вне функций
__________________
low +

Старый 26.12.2009, 15:45
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
у твина есть событие типа мотион_чанже
Код AS3:
tailTween = new Tween({i:0}, "i",  Elastic.easeIn, 120, 0, 2, true);
			tailTween.stop();
			tailTween.looping = true;
			tailTween.addEventListener(TweenEvent.MOTION_CHANGE, tailTweenMotionChange);
 
		}
 
		public function playTail():void {
			tailTween.start();
		}
 
		public function stopTail():void {
			tailTween.stop();
		}
 
		private function tailTweenMotionChange(evt:TweenEvent):void {
			cat.tail.rotation = tailTween.obj.i;
		}
здесь полностью
http://www.murmadillo.tut.su/as3/load-swf-metod.html
еще можно пустой объект с одним свойством сделать и менять это свойство твином
http://www.murmadillo.tut.su/html/tw...c-os-menu.html

Я думаю тут прикол в чем, когда вы изменяете дисплей объекту например 'y' и нечайно сами ставите этому объкту допустим y=10; адобовский твин начинает думать что он уже не нужен и вреден для проекта и кончает жизнь самоубийством, это гарбаж коллектор его съест одним трупяком во флешке будет меньше.
__________________
Гоночка

Старый 26.12.2009, 21:24
Captain QUAZAR вне форума Посмотреть профиль Отправить личное сообщение для Captain QUAZAR Найти все сообщения от Captain QUAZAR
  № 6  
Ответить с цитированием
Captain QUAZAR

Регистрация: Mar 2009
Сообщений: 31
Да, ребята, спасибо! По совету Jewelz вынес
Код AS3:
var tween1:Tween; var tween2:Tween;
за пределы функции. Теперь все работает, как надо.

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

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

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


 


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


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