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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2011, 23:59
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 1  
Ответить с цитированием
savva
[+ 06.08.11]

Регистрация: Jul 2011
Сообщений: 79
По умолчанию TweenLite вопрос

Здравствуйте.

Как динамически добавлять координатыв твин?
То есть я вот разработал функцию
Код AS3:
private function OnClick(e:MouseEvent):void
		{
			var isit:Boolean=false;
			var object:Object = e.target as Object;
			for (var i:Number = 0; i < buttonlist.length; i++)
			{
				if (object.name == buttonlist[i].Label)
				{
					if (buttonlist[i].Action.ObjType == "Camera3D")
					{
						for (var z:Number = 0; z < CamArray.length; z++)
						{
							if (buttonlist[z].Action.ObjName == CamArray[z].name)
							{
								if (buttonlist[z].Action.IsMove)
								{
 
									CamArray[z].x += buttonlist[i].Action.MoveCoord.x;
									CamArray[z].y += buttonlist[i].Action.MoveCoord.y;
									CamArray[z].z += buttonlist[i].Action.MoveCoord.z;
									isit = true;
								}
								if (buttonlist[z].Action.IsRotation)
								{
										CamArray[z].rotationX += buttonlist[i].Action.MoveCoord.AngleX;
										CamArray[z].rotationY += buttonlist[i].Action.MoveCoord.AngleY;
										CamArray[z].rotationZ += buttonlist[i].Action.MoveCoord.AngleZ;
										isit = true;
								}
							}
							if (isit)
							{
								return
							}
						}
					}
					else
					{
						if (buttonlist[i].Action.ObjType == "Object3D")
						{
							trace(buttonlist[i].Action.ObjType);
							for (var q:Number = 0; q < ContArray.length; q++)
							{
								trace(ContArray.length);
								trace(buttonlist[q].Action.ObjName);
								trace(buttonlist[i].Action.ObjName);
									trace(ContArray[q].name);
								if (buttonlist[i].Action.ObjName == ContArray[q].name)
								{
									trace(buttonlist[q].Action.ObjName);
									trace(ContArray[q].name);
									if (buttonlist[i].Action.IsMove)
									{
											trace(buttonlist[i].Action.MoveCoord);
											ContArray[q].x += buttonlist[i].Action.MoveCoord.x;
											ContArray[q].y += buttonlist[i].Action.MoveCoord.y;
											ContArray[q].z += buttonlist[i].Action.MoveCoord.z;
											isit = true;
									}
									if (buttonlist[i].Action.IsRotation)
									{
											ContArray[q].rotationX += buttonlist[i].Action.AngleX;
											ContArray[q].rotationY += buttonlist[i].Action.AngleY;
											ContArray[q].rotationZ += buttonlist[i].Action.AngleZ;
											isit = true;
									}
								}
								if (isit)
								{
									return
								}
							}
						}
					}
				}
			}
		}
Теперь вместо нужно вместо
Код AS3:
CamArray[z].x += buttonlist[i].Action.MoveCoord.x;
CamArray[z].y += buttonlist[i].Action.MoveCoord.y;
;
Нужно вставить твин что-бы плавно происходило движение.А в твин как я понял нужно конечное значение координаты перемещения (то есть то,куда попадёт объект),а у меня в action.MoveCoord хранится смещение(то есть то насколько объект должен сместиться при клике).
Код AS3:
var End:vector3D=new Vector3D(CamArray[z].x += buttonlist[i].Action.MoveCoord.x,CamArray[z].y += buttonlist[i].Action.MoveCoord.y,
CamArray[z].z += buttonlist[i].Action.MoveCoord.z);
to=new TweenLite(CamArray[z],3,{End.x,End.z});  // Такое не работает,но нужно что-то подобное
Ещё нужно добавить функцию проверкичто-то типа
Код AS3:
....
if(isTwening()
{
var object:Object=e.target as object;
object.removeeventListner(MouseEvent.ONCLICK,MouseClick);
}
Чтобы нельзя было повторно нажать кнопку пока не выполнится перемещение.
В доках не нашёл то что нужно,по поводу динамических координат.
Завтра буду пробовать OnComplete для Tween, хотя пока не смогу добавить координаты динамически это бесполезно.

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

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Цитата:
Нужно вставить твин что-бы плавно происходило движение.А в твин как я понял нужно конечное значение координаты перемещения (то есть то,куда попадёт объект),а у меня в action.MoveCoord хранится смещение(то есть то насколько объект должен сместиться при клике).
можно использовать смещение, например:
Код AS3:
var tween:TweenLite = new TweenLite(obj, 1, {x:('+20')});
__________________
freelance | Раздор

Старый 04.08.2011, 01:16
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 3  
Ответить с цитированием
savva
[+ 06.08.11]

Регистрация: Jul 2011
Сообщений: 79
Хорошо,только мне нужно передать не '+20' а buttonlist[i].Action.MoveCoord.x

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

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Код AS3:
var tween:TweenLite = new TweenLite(obj, 1, {x: ("+" + buttonlist[i].Action.MoveCoord.x + "")});
__________________
freelance | Раздор

Старый 04.08.2011, 04:02
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Честно говоря первй раз вижу такую реализацию вообще - 28 ifов да еще и циклы внутри! Вы сами то разбираетесь, что у вас происходит?! .... Пишите граВмотно
__________________
Марк Tween

Старый 04.08.2011, 12:18
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 6  
Ответить с цитированием
savva
[+ 06.08.11]

Регистрация: Jul 2011
Сообщений: 79
Если у тебя есть другие идеи для универсального action отпишись тут http://www.flasher.ru/forum/showthre...=162711&page=2
Первое что пришло в голову то и реализовал. к тому же я легко ориентируюсь.

И к чему написано "пишите граВмотно".

Derhab спасибо.
А поворот с помощью твина можно реализовать?На вход подаётся допустим ось поворота и угол(+ или - в зависимости от стороны).


Последний раз редактировалось savva; 04.08.2011 в 12:27.
Старый 04.08.2011, 12:44
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 7  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
можно, а в чем проблема?
__________________
freelance | Раздор

Старый 04.08.2011, 13:00
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 8  
Ответить с цитированием
savva
[+ 06.08.11]

Регистрация: Jul 2011
Сообщений: 79
А что нужно передавать и каким образомя имею ввиду ось и угол.

И ещё возникла проблема такая.Если buttonlist[i].Action.MoveCoord.x меньше 0 то объект исчезает с экрана(а камера показывает чёрный экран).

Старый 04.08.2011, 13:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
if (object.name == buttonlist[i].Label)
				{
					if (buttonlist[i].Action.ObjType == "Camera3D")
					{
Заменяется на

Код AS3:
var b:Boolean = object.name == buttonlist[i].Label && buttonlist[i].Action.ObjType == "Camera3D"
Например. В данном случае отказываемся от лишней вложенности на глаз. да и вообще. И так каждые 2 ифа переписать и у вас получится всего 2 цикла. удачи
__________________
Марк Tween

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

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Цитата:
Сообщение от savva Посмотреть сообщение
И ещё возникла проблема такая.Если buttonlist[i].Action.MoveCoord.x меньше 0 то объект исчезает с экрана(а камера показывает чёрный экран).
Код AS3:
var offset:Number = buttonlist[i].Action.MoveCoord.x;
var sign:String = offset >= 0 ? "+" : "-" ;
var tween:TweenLite = new TweenLite(obj, 1, {x:sign + Math.abs(offset)});
Цитата:
А что нужно передавать и каким образомя имею ввиду ось и угол.
про ось не понял, а rotation передается так же как и х
__________________
freelance | Раздор


Последний раз редактировалось derhab; 04.08.2011 в 13:54.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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