![]() |
Одновременная работа твинеров
Есть объект, его координаты x=0, y=0
Мы применяем к нему твинер, который за 5 секунд должен будет изменить y на 200. Через 4.5 секунды мы запускаем 2 твинер, который должен поднять(y) объект на 50px В итоге у нас получается, что у объекта в конце Y равен 180(4.5*200/5) +50 =230. А нужно, чтобы Y у объекта после выполнения 2 твина был равен 250. Вообщем надеюсь ясно обяснил :) PS: Все цифры динамические, нельзя например запустить 2й твинер с delay. |
На мой взгляд, два варианта:
1. Делать два твинера, первый по х, второй по х и y. В нужный момент прибивать первый и запускать второй от текущих координат объекта. 2. Написать ручками. Ничего там волшебного нет. Задаете объекту по enterFrame или по таймеру (имхо, лучше по таймеру, либо по enterFrame, но с пересчетом позиции по таймеру) смещение по х и y, в нужный момент изменяете смещение по y. |
Код AS3:
2 Tween с одним объектом и параметром одновременно работать не будут |
Во втором твине указать чтоб не прибавлял к текущей "у" 50, а довел этот "у" до 250.
А то как то не логично получается, вам нужно чтоб объект оказался в координате 250 и вы при этом надеетесь что в момент запуска второго твина координата "у" почему то должна быть именно 200. |
Цитата:
|
mikhailk: 1. Это тоже самое о чём я написал в начале.
Как такое реализовать с помощью Tweenlite(tweenMax)? Mur4ik: Нужно именно прибавлять, а не указывать новую координату. И про 200 нигде не было речи, речь было про то как сделать объект на высоте 250px учитывая условия указанные в 1 посте. |
Цитата:
Цитата:
Цитата:
В противном случае, здается мне, вы неправильно/не точно описываете проблему Из ваших слов имеем Цитата:
Но вы все же берете данные объекта на этапе незаконченного твина (который до 200 еще не дошел), прибавляете к нему 50 и ожидаете получить 250? |
Цитата:
Цитата:
Цитата:
Цитата:
Давайте тогда более детально. В моём случае есть поле, разделённое на блоки(скажем 10х10), каждый объект знает где он находится, в случае движения объекта(он может двигаться только вниз) сам объект знает где он будет находится (например клетка 1х10). Теперь ситуация: Создаётся объект(А) в клетке 1х1 и начинает падение в 1х10 - время падения всегда равно 5 сек, независимо от того, сколько клеток нужно пролететь. Но вот теперь представьте, что во время падения объекта, пользователь создаёт ещё 1 объект(Б) в клетке 1х10 - этот объект никуда не падает, т.к. находится в самой нижней точке. Дык вот проблема, как обновить данные у 1(А) объекта(ведь теперь он должен упать в клетку 1х9)? Это простейший пример, который пришёл в голову. Надеюсь я хоть немного смог объяснить суть. PS: Добавлю, что движение объекта не может быть по 1 клетке(т.е. для каждой клетки создавать анимацию). |
Xel'[Naga],
Вы даете другим участникам форума недостаточно информации для того, чтобы советы были для Вас полезными. Цитата:
Можно это реализовать через некоторый контроллер, который будет его передвигать и тогда уже он будет проверять возможность перемещения в следующую клетку. |
Кто то из ваших компонентов все равно должен знать конечную точку/координату прибытия.
Добавляя объект Б вы уже знаете что объекту А нужно пролететь меньше на одну клетку (знаете ведь?), вот и получив такие данные обновляете твин А с нужными новыми координатами, только конечными а не на основе текущих и не прибавляя постоянную величину, а указывая до куда ему лететь. |
| Часовой пояс GMT +4, время: 04:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.