В строке 8 мы устанавливаем временную позицию шара в памяти, вызывая функцию getTempPositions(). В следующей строке мы перехватываем нажатия клавиш, вызывая captureKeys(). Эта функция проверяет, нажаты ли кнопки Ctrl (Windows), Command (Mac), Shift, или пробел. Более подробно вы узнаете об этой функции позднее.
В последних строках события onEnterFrame мы вызываем процедуры обнаружения столкновений (если никаких столкновений еще не было обнаружено), проверки столкновения со стенками и затем вызываем функцию patch().
buildMap()
Эта функция размещает все объекты и описывает стенки в памяти. То, что делается в этой функции, критично – а также временами запутанно. В этой функции мы
Инициализируем некоторые переменные, которые будут использоваться на протяжении всей игры, такие как score и numBalls.
Создаем переменные, которые хранят координаты четырех стенок доски пинбола.
Создаем несколько линий в памяти для ракеток, рельс, треугольников и стартовой доски. (Это запутанная часть.)
Добавляем амортизаторы на карту в памяти.
Ниже представлена эта функции:
1 function buildMap(){
2 numBalls =3;
3 score =0;
4 lastScoreLevel =0;
5 lastBigScoreLevel =0;
6 startx =250;
7 starty =50;
8 width =225;
9 height =300;
10 var heightFromBottom =100;
11 //левый треугольник
12 var diagLength =70;
13 var diagAng =60;
14 var cosAng =Math.cos(diagAng*Math.PI/180);
15 var sinAng =Math.sin(diagAng*Math.PI/180);
16 //левый треугольник, внутренняя стена
17 var x =startx+20;
18 var y =starty+height-heightFromBottom-55;
19 l =createLine(x,y,diagAng,diagLength,2,
.left_triangle,"laser");
20 var sx =l.x2;
21 var sy =l.y2;
22 // левый треугольник, левая стена
23 var x =l.x1;
24 var y =l.y1+diagLength*sinAng*.6;
25 l =createLine(x,y,269,diagLength*sinAng*.6,1);
26 // левый треугольник, нижняя стена
27 var ex =l.x1;
28 var ey =l.y1;
29 var ang =Math