Иллюстрированный самоучитель по созданию Flash-игр

Управление несколькими клипами

Исходный файл: Gears.fla.

Я также создал улучшенную версию ролика под названием Gears.fla. За исключением кода ролик ничем не отличается от предыдущего. В Gears.fla клипы расположены таким образом, что зубья шестеренок соприкасаются. Чтобы создать эффект работающего механизма, каждый ролик изначально повернут относительно предыдущего на 15 градусов. Соседние зубья каждой шестеренки расположены с интервалом в 30 градусов, поэтому зубья соседних шестеренок сцепляются. Кроме того, каждая шестеренка вращается в направлении, отличном от направления вращения предыдущей. Вот как выглядит код:

onClipEvent(load) {
    initialRotation = 0;
    // Создаем 10 клипов,
    for (i = 0; i < 10; i++) {
        // Присоединяем очередной клип.
        _root.attachMovie("sample", "sample" + i, i);
        // Устанавливаем координаты
        _root["sample" + i]._x = i * 37;
        _root["sample" + i]._y = 100;
        // Устанавливаем каждому следующему поворот
        // на 15 градусов относительно предыдущего.
        _root["sample" + l]._rotation = initialRotation;
        initialRotation += 15;
        onClipEvent(enterFrame) {
            // Пробегаем все клипы через один.
            for (i = 0; i < 10; i += 2) {
                // Поворачиваем по часовой стрелке.
                _root["sample" + i]._rotation += 5;
                // Следующий поворот против часовой стрелки.
                _root["sample" * (i + 1)]._rotation -= 5;
            }
        }
    }
}

Чтобы понять, как устроен код, откройте ролик Gears.fla и поработайте с ним. Этот, а также многие другие коды, которые вы встретите в данной книге, невозможно объяснить только теоретически. Для того чтобы до конца понять устройство и работу примеров, следует поработать с ними.

Обработчики событий

Во Flash 5 единственным способом отслеживания таких событий, как, например, enterFrame, было использование обработчиков onClipEvent в сценариях клипа. В версии MX появилась возможность использовать обработчики прямо в сценарии кадра.

Вот простой пример. Этот сценарий помещен в кадр и посылает сообщение в окно Output при каждом обращении к кадру.

root.onEnterFrame = function() {
    trace("enterFrame Event");
}

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

root.onEnterFrame = myFunction;
function myFunction() {
    trace("enterFrame Event");
}

С помощью этого приема можно обращаться к любым событиям, например onMouseUp, onKeyUp, onLoad и т.д. Полное описание процедур обращения к событиям вы можете найти в документации. Пример использования данной технологии можно найти в главе 13 начиная с игры "Найди картинку".

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.