![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Всем привет. Сегодня мне не повезло наткнуться на проблему, для решения которой мне не хватает серого вещества... Зная наверняка, что обитатели флешера, в отличие от меня, недостатком оного не страдают, решил обратиться к вам, мои дорогие.
Передо мной стоит задача сделать программную анимацию стрелки тахометра. Нажимаем газ, стрелка с замедлением ползет до определенного уровня вверх. Отпускаем газ, стрелка с равной скоростью падает вниз. Для решения данной задачки, я вспомнил урок программной анимации эффекта скольжения/торможения. Взял константу(коэффициент) замедления = 0.95 И шаг, на который изменяется значение угла поворота стрелки. Получаем простейшую формулу: шаг = шаг * 0.95 угол стрелки = угол стрелки + шаг Каждый новый фрейм, стрелка возрастает, но различие в шаге снижается. Если мы не успели довести стрелку до максимума и босили — она будет падать до нуля с постоянной скоростью. Но что, если процесс бросания не доведен до конца? При нажатии газа, стрелка должна начать рости, постепенно замедляясь. Увы, я не могу понять как этот процесс реализовать. Вот если бы я знал, какой шаг соответствует текущему положению стрелки... Зависимость шага от положения стрелки... Помогите пожалуйста разобраться... Прилагаю исходник, иллюстрирующий уровень моих познаний в программировании на АС и знания физики... А может еще и мои умственные способности. Приведу тут же незамысловатый код, чтобы не качать исходник: pointer.tabSlowdown = 0.95; pointer.rMove = 8.99; btn.onRollOver = function(){ pointer.onEnterFrame = function(){ if(this._rotation > 169){ delete this.onEnterFrame; }else{ this.rMove *= this.tabSlowdown; this._rotation += this.rMove; } } } btn.onRollOut = function(){ pointer.onEnterFrame = function(){ if(this._rotation < 0){ delete this.onEnterFrame; this._rotation = 0; this.rMove = 8.99; }else{ this._rotation -= 7; // А вот тут нужно описать то, как переменная rMove будет увеличиваться плоть до 8.99... но как это сделать, я что-то не пойму... } } } Заранее благодарен за помощь или наводящие ответы... Очень на вас надеюсь. Последний раз редактировалось greep; 06.08.2012 в 23:17. |
![]() |
Часовой пояс GMT +4, время: 17:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|