![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
Есть объект, его координаты 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.
__________________
С вами был -=Xel'[Naga] |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
На мой взгляд, два варианта:
1. Делать два твинера, первый по х, второй по х и y. В нужный момент прибивать первый и запускать второй от текущих координат объекта. 2. Написать ручками. Ничего там волшебного нет. Задаете объекту по enterFrame или по таймеру (имхо, лучше по таймеру, либо по enterFrame, но с пересчетом позиции по таймеру) смещение по х и y, в нужный момент изменяете смещение по y. |
|
|||||
main.x = 0; main.y = 0; var t:Tween = new Tween(main , "x",Strong.easeOut,0,300,5,true); t.addEventListener(TweenEvent.MOTION_CHANGE , test); t.start(); function test(e:TweenEvent){ if(e.time > 4.5){ e.currentTarget.stop(); var t2:Tween = new Tween(main , "x",Strong.easeOut,e.position,e.currentTarget.finish+50,1,true); t2.start(); } } 2 Tween с одним объектом и параметром одновременно работать не будут |
|
|||||
|
ветеран форума
|
Во втором твине указать чтоб не прибавлял к текущей "у" 50, а довел этот "у" до 250.
А то как то не логично получается, вам нужно чтоб объект оказался в координате 250 и вы при этом надеетесь что в момент запуска второго твина координата "у" почему то должна быть именно 200.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Если вместо штатного Tween использовать TweenLite, то там можно менять одновременно несколько параметров в рамках одного твина.
|
|
|||||
|
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
mikhailk: 1. Это тоже самое о чём я написал в начале.
Как такое реализовать с помощью Tweenlite(tweenMax)? Mur4ik: Нужно именно прибавлять, а не указывать новую координату. И про 200 нигде не было речи, речь было про то как сделать объект на высоте 250px учитывая условия указанные в 1 посте.
__________________
С вами был -=Xel'[Naga] |
|
|||||
|
ветеран форума
|
По поводу нормальных твинеров, обычно присутствует свойство overwrite (TweenLite/Max) или что то типа того у других. И обычно по дефолту оно включено, т.е следующий твин перепишет идентичные свойства твинуемые в первом.
Если вы прибавляете 50 и хотите получить 250, значит ожидаете что "у" в данный момент именно 200. Цитата:
В противном случае, здается мне, вы неправильно/не точно описываете проблему Из ваших слов имеем Цитата:
Но вы все же берете данные объекта на этапе незаконченного твина (который до 200 еще не дошел), прибавляете к нему 50 и ожидаете получить 250?
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 21.07.2010 в 23:21. |
|
|||||
|
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
Цитата:
Цитата:
Допустим, я указал 250, через 3 секунды нужно снова прибавить 50, т.е. уже нужно 300. Вы же понимаете, что речь идёт о динамических данных, которые меняет пользователь когда ему вздумается и если бы так просто было указать 250, я бы так и сделал Всё же думаю, в твинерах(сам использую от greensock) есть реализация подобной штуки, наверняка ктото сталкивался. Идея Genzo интересна, но интересно услышать ещё какие-то мысли.Цитата:
Давайте тогда более детально. В моём случае есть поле, разделённое на блоки(скажем 10х10), каждый объект знает где он находится, в случае движения объекта(он может двигаться только вниз) сам объект знает где он будет находится (например клетка 1х10). Теперь ситуация: Создаётся объект(А) в клетке 1х1 и начинает падение в 1х10 - время падения всегда равно 5 сек, независимо от того, сколько клеток нужно пролететь. Но вот теперь представьте, что во время падения объекта, пользователь создаёт ещё 1 объект(Б) в клетке 1х10 - этот объект никуда не падает, т.к. находится в самой нижней точке. Дык вот проблема, как обновить данные у 1(А) объекта(ведь теперь он должен упать в клетку 1х9)? Это простейший пример, который пришёл в голову. Надеюсь я хоть немного смог объяснить суть. PS: Добавлю, что движение объекта не может быть по 1 клетке(т.е. для каждой клетки создавать анимацию).
__________________
С вами был -=Xel'[Naga] Последний раз редактировалось Xel'[Naga]; 21.07.2010 в 23:47. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Xel'[Naga],
Вы даете другим участникам форума недостаточно информации для того, чтобы советы были для Вас полезными. Цитата:
Можно это реализовать через некоторый контроллер, который будет его передвигать и тогда уже он будет проверять возможность перемещения в следующую клетку. |
|
|||||
|
ветеран форума
|
Кто то из ваших компонентов все равно должен знать конечную точку/координату прибытия.
Добавляя объект Б вы уже знаете что объекту А нужно пролететь меньше на одну клетку (знаете ведь?), вот и получив такие данные обновляете твин А с нужными новыми координатами, только конечными а не на основе текущих и не прибавляя постоянную величину, а указывая до куда ему лететь.
__________________
trace("Остановите Землю, я сойду!!!"); |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|