Найди картинку
Подготовка ролика
Имя эталона основного клипа в библиотеке – "picture". Он содержит три растровых изображения, по одному в каждом кадре. В первом кадре находится команда stop (). Картинки выстроены так, что верхний левый угол каждой располагается в центральной точке клипа.
Клип "picture" никогда не находится в рабочем поле сам по себе, а внутри двух других клипов: "fullPicture" и "maskedPicture".
В клипе "fullPicture", клип "picture" находится на одном слое, а маленький квадратный клип "button" – поверх него в другом слое.
В клипе "maskedPicture" клип "picture" также находится на одном слое, а клип "button" – на другом. Однако слой кнопки – это слой-маска, маскирующий слой картинки. Это значит, что только сегмент картинки под квадратом остается видимым, когда клип "maskedPicture" расположен в рабочем поле.
В рабочем поле клипы "fullPicture" и "maskedPicture" расположены бок о бок. Размешать клип "maskedPicture" достаточно сложно, поскольку, когда вы его двигаете, он показывает свои границы, которые довольно велики и покрывают все рабочее поле. Як тому же увеличил этот клип до 300%, что сделало его еще больше.
Главная временная шкала содержит четыре кадра. Первый – это страница с правилами. Потом идет кадр "play". Когда игрок заканчивает одну картинку, ролик переходит к кадру "next", чтобы дать игроку передохнуть перед следующей картинкой. Последний кадр – это кадр "game over".
В ролике используются два динамических текстовых поля. Первое, displayBonus, используется в кадре "play". Поле displayScore используется в кадрах "next" и "game over".
Создание кода
В начале ролика задаются функции roundNum и score. Переменная roundNum содержит номер картинки, которая должна появиться.
// Начинаем с первой картинки.
roundNum
=
1
;
score
=
0
;
stop();
Игра начинается, когда пользователь нажимает кнопку в первом кадре. Все коды содержатся на главной временной шкале, в первом слое. Нажатие кнопки вызывает функцию setUpRound.
После того как функция отправляет ролик к кадру "Play", она определяет два клипа. Содержащийся в каждом из них клип "picture" устанавливается в кадр, определяемый переменной roundNum.
После этого выбирается случайное место на картинке. Это происходит с учетом того, что площадь сегмента 36x36, таким образом, это случайное место должно быть не ближе 18 пикселов от края изображения.
В клипе "maskedPicture" положение картинки изменяется таким образом, что случайное место располагается в позиции (0.0), на которой располагается квадрат-маска. Таким образом, если сегмент выбрана из позиции (100, 150), то увеличенная картинка должна быть сдвинута на – 100 пикселов по горизонтали и на – 150 – по вертикали.
В клипе "fullPicture" картинка остается неподвижной, а движется клип "button", пока не займет нужное положение. Свойство _alpha равно 0, чтобы кнопка была невидимой.
Вместо того, чтобы задавать свойство _alpha клипа равным 0, попробуйте задать его равным 25 во время отладки программы. Поскольку клип будет видимым, вам будет легче понять, что игра работает.
function
setUpRound(pictureNum) {
// Переходим к кадру игры .gotoAndStop("Play");
// Выбираем картинку в обоих клипах.
fullPicture.picture.gotoAndStop(pictureNum);
maskedPicture.picture.gotoAndStop(pictureNum);
// Задаем случайное положение картинки.
w
=
fullPicture._width;
h
=
fullPicture._height;
x
=
Math.random()
*
(w
-
36
)
+
18
;
y
=
Math.random()
*
(h
-
36
)
+
18
;
// Передвигаем картинку под маской в это положение.
maskedPicture.picture._x
=
-
x;
maskedPicture.picture._y
=
-
y;
// Задаем координаты кнопки.
fullPicture.button._x
=
x;
fullPicture.button._y
=
y;
// Делаем кнопку невидимой.
fullPicture.button._alpha
=
0
;
// Запускаем таймер.
startTime
=
getTimer();
}