Если да, то мы воспроизводим звук вопля и позволяем событию onEnterFrame произвести падение. Также мы устанавливаем переменную iFell в true, а end в true. Строки 12-21 делают в точности то же, что и 2-11, но для другого персонажа.
Если падает что-то отличающееся от персонажа, то youFell устанавливается в true, а end устанавливается в true. В любом случае воспроизводится звук падающей капли (строка 22), потому что падает плитка. Мы устанавливаем свойство exists в объекте, который представляет эту плитку в false. Мы делаем это таким образом, что если это место щелкнуть снова, персонаж не сможет туда идти. Затем мы присваиваем клипу плитки некоторые начальные переменные и назначаем функцию onEnterFrame, так чтобы она анимировала себя для имитации падения.
Функция moveCharacter() использует переменные end, iFell и youFell для определения того, закончилась ли игра и кто победил. Ниже приведены возможные сочетания.
Таблица 19.1 Кто победил?
Установки экземпляра игры
Событие
Игрок 1
Игрок 2
Победитель
Игрок 1 упал
iFell=true
youFell=true
Игрок 2
Игрок 2 упал
youFell=true
iFell=true
Игрок 1
Оба упали
iFell=true,
youFell=true
iFell=true,
youFell=true
Neither
checkTile()
Эта функция вызывается из функции determineFall(), как видно выше. Она проверяет, должна ли упасть указанная плитка.
1 function checkTile(x,z){
2 var ob =world.tiles [x ][z ];
3 if (ob.exists){
4 var ob1 =world.tiles [x-1 ][z ];
5 var ob2 =world.tiles [x ][z+1 ];
6 var ob3 =world.tiles [x+1 ][z ];
7 var ob4 =world.tiles [x ][z-1 ];
8 if (!ob1.exists &&!ob2.exists &&!ob3.exists &&
.!ob4.exists){
9 fall(ob);
10 }
11 }
12 }
Вначале мы устанавливаем ссылку на указанную плитку, названную ob. Если ob.exists равно true, то мы знаем, что плитка может упасть. Если ob.exists не равна true, то плитка уже упала или никогда не существовала в первоначальном расположении