![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Представьте ситуацию: есть набор иконок, которые надо двигать стрелочками, движение осуществляется твином. Т.е. при каждом нажатии на стрелочку создаётся новый твин и передвигает объект из текущего положения, допустим на +50 пикселов. Если дождаться завершения первого твина - всё ок - объект двигается как надо, но если начать клацать по стрелке очень быстро - начинает появляться смещение. Как сделать так, чтобы смещение не происходило? Сразу скажу что вариант с удалением лисенера не подходит т.к. анимация становится слишком "деревянной".
|
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Не использовать стандартный твин, а TweenLite/TweenMax
И возможно стоит не добавлять 50 пикселей по нажатию, а расчитывать конечное положение контейнера с кнопками? Т.е. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
|
знакомая проблема..нужно рассчитывать следующее местоположение не +50. а чётко определённым. ..
тоесть при нажатии прибавлять какое нибудь ++i. и строить анимацию i*50 px |
|
|||||
|
спасибо. Но мне как раз не понятно, как вычислить это значение - menuPosition.
Пробовал следующим образом: Но это работает только если объект который я анимирую находится в точке 0,0. Как сделать так чтобы учитывалось его текущее положение? Т.е. чтобы он перемещался всегда на одинаковое расстояние, в независимости от того где он находится изначально? |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Попробуйте так:
|
|
|||||
|
Решил вопрос посредством присваивания значению menuPosition изначального положения объекта
![]() var menuPosition:Number = box.x; function moveBoxRight(e:MouseEvent):void { menuPosition += box.width; TweenLite.to(containerBtns, 1, {x:menuPosition}); } для того чтобы адекватно учитывался промежуток, изменил код следующим образом: my_btn.addEventListener(MouseEvent.MOUSE_DOWN, moveBoxRight); var spacing:Number = 8; var firstTime:Boolean = true; var menuPosition:Number = box.x + spacing; function moveBoxRight(e:MouseEvent):void { menuPosition += box.box_mc.width + spacing; TweenLite.to(box, 1, {x:menuPosition}); trace(menuPosition); if(firstTime) { spacing*= 2; firstTime = false; } } |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 168
|
Столкнулся с той же самой проблемой! Кто разобрался, подскажите пожалуйста! У меня по нажатию на клавишу сдвигаются TweenLite-ом несколько UILoader-ов. Если нажимать на кнопку быстро то они начинают глючить.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|