Вы видите здесь проблему? Мы должны обнаружить три столкновения с шаром 1 в одном кадре, но какое из них является реальным столкновением? В конце концов, шар может столкнуться за раз только с одним шаром. Ниже приведено решение.
1. Мы проходим по всем возможным сравнениям обнаружения столкновений. Это означает, что мы проверяем каждый шар в массиве moving против каждого другого шара в массиве moving, и затем каждый шар в массиве moving против каждого из неподвижных шаров в массиве notMoving.
2. Для обнаруженного столкновения мы временно сохраняем в массиве время этого столкновения и имена шаров, вовлеченных в столкновение. Вспомните это из скриптов независимого от кадров обнаружения столкновений, которые мы разработали в Главе 5, «Обнаружение столкновений»: когда столкновение обнаружено, мы берем значение времени, которое истекло от предыдущего кадра до времени столкновения. Если это число равно 0.2, то прошла одна пятая кадра, прежде чем шары столкнулись. Мы здесь не реализуем никаких реакций на столкновение; на этом шаге мы просто собираем значения моментов времени и имена шаров.
3. Когда скрипт обнаружения столкновения сделан, мы сортируем массив таким образом, что столкновение с наименьшим временем находится в массиве на месте с индексом 0. Это столкновение, которое произошло первым.
4. Мы вычисляем реакцию на столкновение для первого столкновения, которое произойдет. Поскольку это столкновение может отменить любое из других столкновений, мы останавливаем скрипт здесь и начинаем его снова (возвращаемся к шагу 1).
Мы выполняем эти четыре шага в цикле до тех пор, пока столкновений на столе нет, или пока мы не прервем цикл по любым другим причинам.
Функции
На этом этапе вашей карьеры как Flash разработчика (или, по крайней мере, пока как читателя этой книги), вы видели практически все функции, которые обеспечивают работу игры, или их похожие версии. В этом разделе мы упомянем большинство основных функций, и что они делают, и в некоторых случаях мы будем рассматривать код ActionScript