Свойство _currentframe
Cвойство _currentframe хранит номер текущего кадра.
switch (this._currentframe) {
case 1: trace("Клетка пуста"); break;
case2: trace("В клетке крестик"); break;
case 3: trace("В клетке нолик"); break;
}
Обработка хода в игре
Обработчик события нажатия клетки (onPress) для каждой клетки один и тот же. Придется писать одну и ту же функцию несколько раз.
c00_mc.onPress=function() {…}
…
c22_mc.onPress=function(){…}
Если бы обработчики создавались как сценарии клипов, то другого варианта не было бы. Но при создании обработчиков-методов можно написать именованную функцию, содержащую все действия обработчика
function hod(){…}
Имя функции hod является ссылкой на саму функции, поэтому методу onPress можно присвоить имя функции.
c00_mc.onPress=hod;
…
c22_mc.onPress= hod;
Причем используя функцию eval можно записать последовательность операций присвоения в цикле.
for(row=0;row<=2;row++)
for(col=0;col<=2;col++)
eval("c"+row+col+"_mc").onPress=hod;
//или _root["c"+row+col+"_mc"].onPress=hod
В функции hod можно ссылаться на вызвавший объект через указатель this.
Определение положения выбранной клетки
|
|
В обработчике события нажатия клетки можно узнать ее имя с помощью свойства _name.
var clip_name: String
clip_name=this._name
В имени клетки зашито ее положение. Второй и третий символы —номера ее строки и столбца.
Строки имеют метод substring(start,end), который возвращает подстроку, начинающуюся с индекса start и заканчивающуюся перед индексом end. Для получения номера столбца надо получить его строковое представление и преобразовать в число.
row=Number(clip_name.substring(1,2))
col=Number(clip_name.substring(2,3))
Задание 6
6.1 Запрограммировать игру следующим образом:
¨ два игрока по очереди проставляют свои ходы щелчками мышки на выбранных клетках — один крестиками другой ноликами;
¨ щелчок уже заполненной клетки игнорируется.
Указания.
Создать переменную player, которая может принимать два значения — "х" и "0" или 2, 3 (номера соответствующих кадров клетки). Значение ее меняется при каждом ходе и определяет кадр, на котором останавливается нажимаемый клип-клетка.
6.2 Добавить кнопку, нажатие которой начинает новую игру (очищает все клетки).