Для выполнения процедуры action, компьютер должен иметь две переменных x и y - номер столбца и строки нажатой кнопки. Получение значений этих переменных и служит приведенный ниже код. Он должен выполняться, когда игрок нажимает на соответствующий квадрат игрового поля. Это означает, что код должен принадлежать кнопке. Выделите объект kn и в поле "Действия кадра" наберите соответствующий код:

1
2
3
4
5
6
7
on (release) {
x1 = getProperty(_, _xmouse);
x = Math.round((x1-30)/(l+2));
y1 = getProperty(_, _ymouse);
y = Math.round((y1-60)/(l+2));
call("action");
}

Внимание: если вы используете Flash MX 2004, то данный код нужно написать несколько иначе

1
2
3
4
5
6
7
on (release) {
x1 = _root._xmouse;
x = Math.round((x1-30)/(l+2));
y1 = _root._ymouse;
y = Math.round((y1-60)/(l+2));
call("action");
}

Вторая строка этого фрагмента отслеживает координату x щелчка мыши. Для этого используется уже известная нам команда getProperty, со свойством _xmouse. Обратите внимание, что в качестве имени объекта используется просто символ подчеркивания, свойство _xmouse не соответствует ни какому объекту! В строке 4 производится перевод реальной координаты щелчка в координату поля. Для этого от переменной x1 отнимается 30, т.к. все поля смещены от границы игрового поля вправо на тридцать пикселей. Полученное выражение делится на размер клипа, с учетом его границ и результат округляется. Строчки 4 и 5 выполняют аналогичные действия с координатой y. Осталось вызвать процедуру action. Для этой цели используется команда call.

Для вызова выполните следующие действия:
Окно "Действия кадра" Actions - User-Defined Functions
вызов процедуры осуществляется по имени кадра, в котором находится соответствующий программный код. По завершении процедуры компьютер возвращается в исходную точку и переходит к следующей команде.

Так описываемый код принадлежит символу kn, а все кнопки игрового поля являются его потомками, то автоматически при нажатие на любую кнопку игрового поля будет вычисляться координата и будет выполняться процедура, изменяющая узор.

Нам также потребуется во втором кадре слоя "Действия" создать еще один ключевой кадр. Выделите второй кадр и нажмите клавишу F7 (или меню Вставка - Пустой ключевой кадр). В данном кадре нам потребуется добавить всего одну команду Stop().

Для чего это нужно? В первом кадре компьютер построит игровое поле, сформирует массив, хранящий текущий узор, но если мы просто запустим проект на выполнение он будет либо выполнять первый кадр, а вслед за этим переходить на кадр с процедурой изменения узора. Чтобы этого не происходило, мы создали еще один промежуточный кадр и остановили там нашу игру, все остальные действия будут происходить здесь.

Чтобы во втором кадре были видны все созданные нами объекты, на слое "Поле " во втором кадре нажмите клавишу F5 (или меню Вставка - Вставить кадр).

что должно получиться:
Протестируйте ваш проект. У вас игровое поле должно "ожить", при нажатие на любую кнопку, в сопряженном кресте все поля должны менять свой цвет на противоположный (Рисунок 11).

Изменение цвета клеток в сопряженном кресте
Рис. 11. Изменение цвета клеток в сопряженном кресте.