Игрок не может делать ход, если player1stopped и player2stopped не равны «yes».
Это подводит нас к функции roomVarChanged(), которая вызывается всякий раз, когда переменная комнаты создается, изменяется или удаляется.
1 function roomVarChanged(ob){
2 if (!initializedYet &&ob.player1 =="here"&&
.ob.player2 =="here"){
3 initializedYet =true;
4 startGame();
5 }else if (initializedYet &&(ob.player1 !="here"||
.ob.player2 !="here")){
6 popup.gotoAndStop("player left");
7 }
8 if (ob.player1stopped =="yes"&&
.ob.player2stopped =="yes"){
9 locked =false;
10 display.gotoAndStop(game.myTurn ?"myturn":
."notmyturn");
11 }else {
12 locked =true;
13 display.gotoAndStop("sync");
14 }
15 }
Эта функции по большей части идентична своей коллеге в крестиках-ноликах. Отличается второй оператор if. Это там, где мы обрабатываем блокировку и разблокировку экрана игры. Если значение как player1stopped, так и player2stopped равно «yes», это означает разрешение на удар для кого-либо. В этом случае мы устанавливаем locked в false, что позволяет текущему игроку делать ход. В противном случае мы устанавливаем locked в true, поскольку шары на одном из экранов еще не остановились. В любом случае мы приказываем клипу с именем экземпляра sync перейти на определенный кадр. Этот клип сообщает нам, что происходит. Если он находится в кадре «sync», то клип отображает слово “Synchronizing”(«Синхронизация»). Если в этот момент выполняется чей-то ход, то он отображает «Your Turn»(«Ваш ход») или «Not Your Turn»(«Не ваш ход»).
Теперь вы видели все операторы, которые управляют многопользовательской природой это игры. Далее мы займемся кодом ActionScript для управления состояниями непосредственно экрана игры.
Код игры
Количество кода, использованного в кадре Actions клипа игры в этом файле, пугает