Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   TweenLite - пауза исполнения на время анимации (http://www.flasher.ru/forum/showthread.php?t=166402)

zerAlex2 02.09.2011 17:55

TweenLite - пауза исполнения на время анимации
 
Подскажите как сделать.
Есть массив кнопок - 40 шт., они отображаются как бы на 2х страницах - 1: первые 20 visible=true, 2: вторые visible=false... ну и переключаю их туда сюда.
При переключении хочу TweenLite-ом увести первый по Sacle в 0, переключить им visible и опять TweenLite-ом вывести второй по Sacle в 1. Но проблемка - TweenLite делает анимацию независимо от выполнения кода.
Т.е. код выполняется как бы одновременно, без учёта времени на анимацию:
Код AS3:

buttonsTweenLiteScaleDown();//Масштабировать кнопки в 0
//Нужна пауза 0,5с.
buttonVisibleInverse();
buttonsTweenLiteScaleUp();//Масштабировать кнопки в 1
//Нужна пауза 0,5с.

Как заставить код "ждать" выполнение анимации TweenLite-а?
Благодарю

in4core 02.09.2011 17:59

Timer, setTimeout, setInterval

КорДум 02.09.2011 18:00

Посмотрите документацию к библиотеке. Вам нужен параметр onComplete.

in4core 02.09.2011 18:01

ога не правльно прочитал ) думал, после нажатия надо подорждать а потом тока запуцстить) да onComplete в помощь

zerAlex2 02.09.2011 18:09

Оно самое, только не пойму как прикрутить это. Как заставить остальные строки ждать очереди?

derhab 02.09.2011 18:12

можно использовать delay, тогда не нужно лишних функций onComplete

КорДум 02.09.2011 18:12

Код AS3:

onComplete:myFoo

По окончанию твина запустится этот метод.

Добавлено через 1 минуту
derhab, если анимация применяется к одному объекту, то delay не сработает (сразу стартанет вторая анимация).

zerAlex2 02.09.2011 18:21

Не, таких методов запуститься 40 штук(!!!) у меня 40 кнопок :) А мне этого не нужно.
И... анимации в кадрах нет, только програмная.

derhab 02.09.2011 18:22

Цитата:

Сообщение от КорДум (Сообщение 1027753)
если анимация применяется к одному объекту, то delay не сработает (сразу стартанет вторая анимация).

а разве тут анимация к одному объекту применяется?

Добавлено через 1 минуту
Цитата:

Сообщение от zerAlex2 (Сообщение 1027756)
Не, таких методов запуститься 40 штук(!!!) у меня 40 кнопок :) А мне этого не нужно.

не надо 40 методов, держите все свои объекты в массиве, а в методе проходите по массиву в цикле и делайте с объектами то что нужно

КорДум 02.09.2011 18:25

Цитата:

а разве тут анимация к одному объекту применяется?
Две анимации на кнопку. Нет?

zerAlex2 02.09.2011 18:30

Сначала анимация Scale в 0 для 40 кнопок
Потом инверсия visible
Потом анимация Scale в 1 для 40 кнопок (какие-то видно какие-то нет)

Код AS3:

function buttonsTweenLiteScaleDown():void{        
        someNumber=btnMO.length;       
        for (var i=0; i<someNumber; i++){       
                TweenLite.to(Object(btnMO[i]), 0.5, {scaleX:0, scaleY:0, ease:Circ.easeInOut});
        }
}

Ну и обратно подобно тому.

Да, коряво пока. Переделаю. Но всё равно останется 20 кнопок для анимации.

derhab 02.09.2011 18:31

Цитата:

Сообщение от КорДум (Сообщение 1027759)
Две анимации на кнопку. Нет?

да вроде по одной анимации на кнопку
одна скрывается, вторая (через определенную паузу) открывается.. а может я не понял ничего))

zerAlex2 02.09.2011 18:44

А что так с delay? Можно выполнение кода остановить?

derhab 02.09.2011 19:10

почитайте тут

zerAlex2 02.09.2011 19:51

Нет, это совсем не то. Delay делает задержку перед выполнением анимации самого TweenLite-а, а мне нужно сделать задержку исполнения кода, пока TweenLite анимирует кнопки.
Видимо нужно как-то обрабатывать все 20 событий onComplete.

fljot 02.09.2011 20:03

Код AS3:

TweenMax.allTo(buttonsArray, 1, {autoAlpha: 1}, 0, onGroupTweenComplete);


zerAlex2 02.09.2011 20:19

TweenMax.allTo - видео урок на эту тему:
http://www.youtube.com/watch?v=p2BgAgyInHc

Тоже заковыка - анимация смотрится топорно, TweenLite по одиночке это делает красивее.

В общем, пришлось делать свой AllComplete, через счетчик событий onComplete TweenLite-а.
Все разложил на таймлайн и когда на входе в кадр с командой stop() начинается анимация, счетчик набирает 40 событий прежде чем сделать play(). Как-то так.

Добавлено через 18 часов 12 минут
Всё равно, при программной анимации вопрос задержки исполнения кода очень актуален. Т.к. приходится плодить кучу "заплаточных" функций.


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

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