PDA

Просмотр полной версии : Нужен скрипт движения AS2


FixMAN
24.09.2012, 14:55
Есть объект. Необходимо, что бы этот объект двигался от точки "А" в точку "Б" (вправо), движение очень медленное (минут на 15-ь). Какой скрипт нужно использовать к этому объекту?

Hauts
24.09.2012, 15:57
import com.greensock.*
TweenLite.to(myClip, 15 * 60, {_x: 1000, _y: 1000})


Используйте твинер.

FixMAN
30.09.2012, 17:17
Не совсем понял. Что такое "твинер" и как им пользоваться?

Hauts
01.10.2012, 12:02
FixMAN, твинер — это библиотека для анимации. Основная задача — изменение численных свойств объектов по времени и на основании какой-либо функции.

Заходите на http://greensock.com, скачивайте библиотеку для as2, распаковывайте архив. Папку "com" положите в ту же директорию, где у вас исходник. Это необходимо для того, чтобы код классов (файлы .as) был доступен в коде вашей флэшки.

Далее в коде напишите (код в кадре):

import com.greensock.*


— это значит, что вы "импортируете" классы из папки "com" и вложенной папки "greensock".

Далее:
TweenLite.to(myClip, 15 * 60, {_x: 1000, _y: 1000})

— это непосредственно обращение к твинеру. TweenLite - это твинер. TweenLite.to - это вызов анимации.

myClip — это instance name мувиклипа, который лежит на сцене.

15 * 60 — это пятнадцать раз по 60 секунд, то есть 15 минут. Это я так для удобства записал просто.

{_x: 1000, _y: 1000} — это объект со свойствами для анимации. Для примера я ставлю конечными свойствами _x и _y по 1000 пикселей.

Добавлено через 1 минуту
И, конечно же, обязательно посмотрите примеры с сайта и прочитайте документацию. Штука очень полезная и относительно простая для понимания.

FixMAN
01.10.2012, 13:22
Ок. Всё понял. Спасибо)

Добавлено через 20 минут
Дополнительный вопрос. Как сделать что бы анимация повторялась?

Hauts
01.10.2012, 13:47
TweenLite.to(myClip, 15 * 60, {_x: 1000, _y: 1000, repeat: -1})

В документации это есть.

FixMAN
01.10.2012, 15:17
Усложним задачу: как сделать так, что бы объект появлялся через какое то время?
Ну допустим, надо что бы объект появился через через 10-ь секунд проиграл свою анимацию и снова появился через 10-ь секунд и так далее.

Hauts
01.10.2012, 15:47
var delayToShow = 10 * 1000;
var startTime = getTimer();
myClip._alpha = 0;
myClip._x = 100
myClip.onEnterFrame = function() {
if (getTimer() - startTime > delayToShow) {
if (this._x < 1000) {
if (this._alpha < 100) {
this._alpha += 5;
}
this._x++;
} else {
if(this._alpha > 0){
this._alpha -= 5
} else {
this._x = 100;
startTime = getTimer()
}
}
}
};

Как-нибудь так? Если без твинера.

Добавлено через 2 минуты
import com.greensock.*
var delayToShow = 10 * 1000

function delayedShow(){
myClip._x = 1000
TweenLite.to(myClip, 10 * 1000, {_x:1000, onComplete: delayedShow, delay: delayToShow})
}

delayedShow()

— если с твинером. Могут быть ошибки, так как пишу по памяти.

FixMAN
01.10.2012, 20:21
Да ты мозг) Спасибо :)

Добавлено через 2 минуты
Чуть не забыл. Как скорость регулировать? Мне нужно что бы объект перемещался быстрее. Нужно добавлять новую функцию для скорости?

Hauts
01.10.2012, 20:29
В твинере скорость определяется временем анимации, второй параметр в TweenLite.to.

Без твинера можно поменять "this._x++;" на "this._x+=10;"

FixMAN
01.10.2012, 20:37
Отлично! ))) Спасибо :)))

Добавлено через 5 минут
Какая функция отвечает за повторение анимации в первом случае (не твиннер) ?

Добавлено через 12 минут

Hauts
02.10.2012, 10:27
Какая функция отвечает за повторение анимации в первом случае (не твиннер) ?

— onEnterFrame все контролирует. Там других и нет же.