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

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

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Arrow Как переопределить конечное местоположение объекта при Tween анимации

Представьте ситуацию: есть набор иконок, которые надо двигать стрелочками, движение осуществляется твином. Т.е. при каждом нажатии на стрелочку создаётся новый твин и передвигает объект из текущего положения, допустим на +50 пикселов. Если дождаться завершения первого твина - всё ок - объект двигается как надо, но если начать клацать по стрелке очень быстро - начинает появляться смещение. Как сделать так, чтобы смещение не происходило? Сразу скажу что вариант с удалением лисенера не подходит т.к. анимация становится слишком "деревянной".

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Не использовать стандартный твин, а TweenLite/TweenMax
И возможно стоит не добавлять 50 пикселей по нажатию, а расчитывать конечное положение контейнера с кнопками? Т.е.
Код AS3:
//не
TweenLite.to(containerBtns, 1, {x:containerBtns.x + 50});
//a
var menuPosition:Number = ...
TweenLite.to(containerBtns, 1, {x:menuPosition});

Старый 11.02.2011, 19:27
kseniya вне форума Посмотреть профиль Отправить личное сообщение для kseniya Найти все сообщения от kseniya
  № 3  
Ответить с цитированием
kseniya
 
Аватар для kseniya

Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
знакомая проблема..нужно рассчитывать следующее местоположение не +50. а чётко определённым. ..
тоесть при нажатии прибавлять какое нибудь ++i. и строить анимацию i*50 px

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
спасибо. Но мне как раз не понятно, как вычислить это значение - menuPosition.
Пробовал следующим образом:
Код AS3:
function moveBox(e:MouseEvent):void
{
	shiftNum++;
	finalLocation = box.width * shiftNum;
	my_tw = new Tween(box, "x", Regular.easeOut, box.x, finalLocation, 15, false);
	trace(finalLocation);
}
Но это работает только если объект который я анимирую находится в точке 0,0. Как сделать так чтобы учитывалось его текущее положение? Т.е. чтобы он перемещался всегда на одинаковое расстояние, в независимости от того где он находится изначально?

Старый 11.02.2011, 20:19
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 5  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Попробуйте так:
Код AS3:
var menuPosition:Number;
function moveBoxRight(e:MouseEvent):void
{
	menuPosition += box.width;
	TweenLite.to(containerBtns, 1, {x:menuPosition});
}

Старый 11.02.2011, 20:40
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 6  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Решил вопрос посредством присваивания значению menuPosition изначального положения объекта
Код AS3:
var menuPosition:Number = box.x;
function moveBoxRight(e:MouseEvent):void
{
	menuPosition += box.width;
	TweenLite.to(containerBtns, 1, {x:menuPosition});
}
Добавлено через 6 минут
для того чтобы адекватно учитывался промежуток, изменил код следующим образом:
Код AS3:
my_btn.addEventListener(MouseEvent.MOUSE_DOWN, moveBoxRight);
 
var spacing:Number = 8;
var firstTime:Boolean = true; 
 
var menuPosition:Number = box.x + spacing;
 
function moveBoxRight(e:MouseEvent):void
{
 
	menuPosition += box.box_mc.width + spacing;
	TweenLite.to(box, 1, {x:menuPosition});
	trace(menuPosition);
	if(firstTime)
	{
		spacing*= 2;
		firstTime = false;
	}
}
Что думаете? Правильно мыслю?

Старый 21.03.2011, 00:07
Max360 вне форума Посмотреть профиль Отправить личное сообщение для Max360 Найти все сообщения от Max360
  № 7  
Ответить с цитированием
Max360

Регистрация: Mar 2011
Сообщений: 168
Столкнулся с той же самой проблемой! Кто разобрался, подскажите пожалуйста! У меня по нажатию на клавишу сдвигаются TweenLite-ом несколько UILoader-ов. Если нажимать на кнопку быстро то они начинают глючить.

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

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

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


 


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


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