xmov =vxf;
21 point.ymov =vyf;
22 point.tempx =point.x+point.xmov;
23 point.tempy =point.y+point.ymov;
24 }
Эта функция вызывается из функции getFrames(), когда обнаруживается столкновение. Обращение к объекту line передается через параметр tempLine, а обращение к объекту, представляющему мяч, передается через параметр point. Координаты x и y мяча в точке контакта также передаются в эту функцию. Строка 2 устанавливает переменную с именем lineDecay. Это значение между 0 и 1, которое уменьшает векторную скорость при отскоке. (Концепция затухания была разъяснена в этой главе ранее). Если затухание имеет значение равное 1, то это не затухание. Далее мы устанавливаем переменные для хранения косинуса и синуса угла линии (строки 4 и 5). Мы сохраняем эти значения потому, что в них возникает необходимость более одного раз в процессе выполнения этого кода ActionScript, и как мы уже видели, во Flash повторное использование переменных дает более быстрый код, чем вычисление синуса и косинуса повторно. Для соответствия имен переменных, с которыми мы работали в этом разделе, мы устанавливаем две переменные vyi и vxi на линию действия, а в строке 12 мы проецируем vxi и vyi на линию. Затем мы меняем знак векторной скорости вдоль линии действия, vyip, и умножаем ее на lineDecay. Действие по изменению знака этой скорости является реакцией на столкновение. Далее, в строках 17 и 18, мы проецируем назад на оси x и y. В строках 20 и 21 мы обновляем xmov и ymov на объект ball с новыми векторными скоростями. В заключение. Мы обновляем tempx и tempy на объект ball (строки 22 и 23). Создайте SWF из этого файла и посмотрите в действии. Вы заметите, что создаются три линии. Мяч падает под действием гравитации на линию и немного прыгает. В конечном счете, мяч приходит в состояние покоя в самой низкой точке.
Сохранение импульса и энергии
В этом разделе мы собираемся рассмотреть два физических закона, которые дают нам некоторые математические соотношения, помогающие определить равнодействующую векторных скоростей двух столкнувшихся объектов