Затем мы определяем переменную гравитации и постоянную трения u. В строке 4 мы используем гравитацию и постоянную трения для нахождения значения ускорения, возникающего в процессе трения. Выражение if в событии onEnterFrame нужно для того, чтобы удостовериться, что мы прибавляем или вычитаем ускорение правильно (в зависимости от направления движения). Вы выражение if также контролирует, что произойдет с шаром, если векторная скорость меньше чем ускорение; если такое происходит, то в следующем фрейме шар должен остановиться.
Достаточный подход к описанию трения
В то время, как метод, обсуждаемый выше представляет собой корректный способ обработки сил трения, он может несколько запутанным и тяжеловесным со всеми этими выражениями if для проверки. Ниже приводится более быстрый и простой способ обработки трения и достижения визуально очень похожего результата.
1. Выберите число между 0 и 1. Давайте назовем это число ослаблением.
2. Умножайте ослабление на векторную скорость в каждом фрейме.
Дело сделано!
Если ослабление равно 1, то векторная скорость никогда не изменяется. Если ослабление равно 0, то векторная скорость равна 0 после фрейма 1. Если ослабление имеет значение между 0 и 1, то она будет стремиться к 0 в каждом фрейме. Для просмотра примера откройте файл roll2.fla в папке Chapter04 на CD. Как в предыдущем примере, в этом фильме представлен шар с начальной векторной скоростью, скользящий до остановки … ладно, отчасти. Для начала, давайте посмотрим на код ActionScript:
1 xmov =10;
2 decay =.95;
3 _root.onEnterFrame =function(){
4 xmov *=decay;
5 ball._x +=xmov;
6 };
Как вы видите, это гораздо более простой способ использования трения (чем, вероятно, объясняется, что это также наиболее часто используемый метод). В результате шар скользит от начальной векторной скорости к нулевой. Важно обратить внимание на тот факт, что не имеет значения как много раз вы умножаете ненулевое число на ненулевое число, вы никогда не получите нуль