Показать сообщение отдельно
Старый 03.08.2011, 23:59
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 1  
Ответить с цитированием
savva

Регистрация: 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, хотя пока не смогу добавить координаты динамически это бесполезно.