Откройте файл grid_click.fla в папке Chapter07. Этот файл является модифицированной версией grid.fla. С помощью добавленного в этот файл кода ActionScript вы, нажимая на ячейку, изменяете ее тип. Если вы нажмете на одну ячейку достаточное число раз, она вернется к первоначальному типу. Я использовал этот прием просто для того, чтобы показать, как определить - на какой ячейке был произведен клик, когда была нажата кнопка мыши. Ниже представлен добавленный код ActionScript:
1 function gameClicked(mx,my){
2 var x =Math.ceil(mx/game.spacing);
3 var y =math.ceil(my/game.spacing);
4 var cell ="cell"+x+"_"+y;
5 var ob =game [cell ];
6 if (ob.type<game.numberOfTypes){
7 ++ob.type;
8 }else {
9 ob.type =1;
10 }
11 ob.clip.tile.gotoAndStop(ob.type);
12 }
13 _root.onMouseDown =function(){
14 var mx =_xmouse;
15 var my =_ymouse;
16 if (game.path.hitTest(mx,my)){
17 gameClicked(game.path._xmouse,game.path._ymouse);
18 }
19 };
Взгляните сначала на строки 13-19, событие onMouseDown. Когда кнопка мыши нажата, координаты курсора мыши сохраняются. Если эти координаты находятся над клипом grid (представленном ссылкой в game.path), мы вызываем функцию gameClicked() выше, передавая координаты мыши в gameClicked(). В строках 2 и 3 мы используем уловку, описанную в этом разделе, для определения, на какой ячейке произошел клик. В следующей строке мы формируем имя объекта, который содержит информацию об этой ячейке, и затем в строке 5 мы создаем ссылку на этот объект с именем ob. Строки 6-10 проверяют, является ли переменная ob.type меньше 8 и если да, мы инкрементируем ее; в противном случае мы устанавливаем ее в 1. Наконец, в строке 11 мы изменяем кадр на тот, который соответствует установленному типу плитки.
Создайте SWF из этого файла и протестируйте его. Понажимайте ячейки для изменения типов ячеек. Типы 2-8 соответствуют стенам. Вы можете легко создать уникальную конфигурацию поля