Перейти к содержимому



Функция Tween() в Action Script 3.0

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 23 Февраль 2010 - 18:56

Должен был разбирать чисто для себя, но подумал что это будет интересно и другим пользователям. Заодно узнаю правильно ли я всё понял :) Собственно виновник темы:
пс. без атача не разобраться ;)

import fl.transitions.Tween; // импорт библиотеки Твин
import fl.transitions.easing.*; // Импорт всех(*) разделов библиотеки изин

var homeX:Number = 955; // задаём координаты мувиклипа (клипа) при выборе раздела хоум
var homeY:Number = 767; 

var newsX:Number = -402; // задаём координаты мувиклипа (клипа) при выборе раздела нювс
var newsY:Number = 558;

var aboutX:Number = 661; // задаём координаты мувиклипа (клипа) при выборе раздела ебаут
var aboutY:Number = -307;

var xTween:Tween; // задаём переменные для функции движения 
var yTween:Tween;

xTween = new Tween(main_mc, "x", Strong.easeInOut, main_mc.x,homeX,2, true); // присваиваем переменным параметры движения; движение будет происходить от 
yTween = new Tween(main_mc, "y", Strong.easeInOut, main_mc.y,homeY,2, true); // координат в которых находится сейчас клип, до координат клипа в разделе хоум 

home_btn.addEventListener(MouseEvent.CLICK, navigate); // присваимваем функцию навигейт кнопочкам
news_btn.addEventListener(MouseEvent.CLICK, navigate);
about_btn.addEventListener(MouseEvent.CLICK, navigate);

function navigate(event:MouseEvent):void {
	if (event.target == home_btn) { // если предмет который выполняет событие есть хоум_батн, тогда выполняем функцию сетТвин
		setTween(homeX, homeY); 
	} 
	else if (event.target == news_btn) { // аналогично
		setTween(newsX, newsY);
	}
	else if (event.target == about_btn) { // аналогично
		setTween(aboutX, aboutY);
	}
}


function setTween(tweenX:Number,tweenY:Number):void { // вот в этом куске кода я "дупля не режу", что тут задаётся
	xTween.begin = main_mc.x; // анимация движения начинается с координат, в которых находится клип
	yTween.begin = main_mc.y;
	xTween.finish = tweenX; // заканчивается там, где указанно в переменных, при запросе функции
	yTween.finish = tweenY;
	xTween.start(); // начинаем анимацию движения
	yTween.start();
}

xTween.stop(); // нафиг их сюда? 
yTween.stop();

Если у кого стоит Макромедиа или старый флеш, то постараюсь растолковать что и как я делал... Но для начала смотрим флешку _http://megaswf.com/view/079f84fcac0cce0a7dc9ec6fb3e81c20.html
Есть 3 квадратика: красный - хоум, зелёный - нювс и жёлтый - ебаут. Изначально они расположены так: красный вверху слева, зелёный вверху справа, жёлтый на месте (затупил хД). Эти 3 квадратика есть один мувиклип main_mc. Для отображения одного из квадратиков, этот мувиклип просто перемещается по координатам хоум, нювс и эбаут, которые я задал и всунул в переменные. Надеюсь понятно :)
Прикрепленный файл  TweenIMG.zip   18,15К   Количество загрузок: 135

 

 

  • 0


#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Февраль 2010 - 21:24

Banderas, Tween() это не функция, это создание объекта, так как предворено new.
У тебя в примере создаются 2 объекта tween c которыми ты потом работаешь, это xTween и yTween.

Вообщем дам тебе ссылку на конструктор Tween(), мы его как раз и используем.
И распишу тебе каждый из параметров, передаваемых объекту.

Параметры
obj:Object — Объект, являющийся целями Tween.

prop:String — Имя свойства (значение параметра obj) на которое будет направлено воздействие.

func:Function — Имя используемой функции замедления.

begin:Number — Начальное значение параметра prop.

finish:Number — Число, указывающее конечное значение параметра prop (целевого объекта, подвергаемого анимации движения).

duration:Number — Продолжительность движения. Если значение отрицательное или пропущено, устанавливается значение infinity.

useSeconds:Boolean (default = false) — Флаг, определяющий использование секунд вместо кадров. Функция использует секунды, если значение флага — true, или кадры относительно значения, определенного в параметре duration, если значение флага — false.


По поводу класса Strong из библиотеки easing читать здесь

В нашем примере:
xTween = new Tween(main_mc, "x", Strong.easeInOut, main_mc.x,homeX,2, true);
main_mc - объект, над которым совершаем действия Tween
"x" - означает что мы будем совершать действия над main_mc.x
Strong.easeInOut - означает, что мы будем использовать резкое замедление из библиотеки easing
main_mc.x - начальное значение воздействия это текущее положение мувиклипа по оси X
homeX - конечным значением будет положение области Home по координате X
2 - Длительность анимации движения в кадрах или секундах
true - означает, что используем количество секунд, а не кадров
yTween = new Tween(main_mc, "y", Strong.easeInOut, main_mc.y,homeY,2, true);
main_mc - объект, над которым совершаем действия Tween
"y" - означает что мы будем совершать действия над main_mc.y
Strong.easeInOut - означает, что мы будем использовать резкое замедление из библиотеки easing
main_mc.y - начальное значение воздействия это текущее положение мувиклипа по оси Y
homeY - конечным значением будет положение области Home по координате Y
2 - Длительность анимации движения в кадрах или секундах
true - означает, что используем количество секунд, а не кадров

P.s.: А вот всё про класс Tween
  • 0


Оформление форума – IPBSkins.ru