Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 06.08.2012, 19:58
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 1  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
По умолчанию Программная анимация стрелки тахометра: как описать зависимость от нажатия педали газ

Всем привет. Сегодня мне не повезло наткнуться на проблему, для решения которой мне не хватает серого вещества... Зная наверняка, что обитатели флешера, в отличие от меня, недостатком оного не страдают, решил обратиться к вам, мои дорогие.

Передо мной стоит задача сделать программную анимацию стрелки тахометра. Нажимаем газ, стрелка с замедлением ползет до определенного уровня вверх. Отпускаем газ, стрелка с равной скоростью падает вниз.

Для решения данной задачки, я вспомнил урок программной анимации эффекта скольжения/торможения.

Взял константу(коэффициент) замедления = 0.95
И шаг, на который изменяется значение угла поворота стрелки.

Получаем простейшую формулу:

шаг = шаг * 0.95
угол стрелки = угол стрелки + шаг

Каждый новый фрейм, стрелка возрастает, но различие в шаге снижается.

Если мы не успели довести стрелку до максимума и босили — она будет падать до нуля с постоянной скоростью.

Но что, если процесс бросания не доведен до конца? При нажатии газа, стрелка должна начать рости, постепенно замедляясь. Увы, я не могу понять как этот процесс реализовать. Вот если бы я знал, какой шаг соответствует текущему положению стрелки... Зависимость шага от положения стрелки...

Помогите пожалуйста разобраться... Прилагаю исходник, иллюстрирующий уровень моих познаний в программировании на АС и знания физики... А может еще и мои умственные способности.

Приведу тут же незамысловатый код, чтобы не качать исходник:

Код AS1/AS2:
 
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... но как это сделать, я что-то не пойму...
			}
 
		}
}

Заранее благодарен за помощь или наводящие ответы... Очень на вас надеюсь.
Вложения
Тип файла: zip sample.zip (9.9 Кб, 91 просмотров)


Последний раз редактировалось greep; 06.08.2012 в 23:17.
Создать новую тему   Часовой пояс GMT +4, время: 17:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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