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

Лавовая лампа

Создание кода

Lava Lamp использует 20 экземпляров клипа, созданных из одного библиотечного эталона. С помощью команды attachMovie копии клипа добавляются в ролик. Более подробно о команде attachMovie рассказано в главе 5, раздел "Эффект трехмерности".

При запуске ролика в первом и единственном кадре временной шкалы выполняется функция initLamp. При этом помимо 20 клипов пузырьков будет создан массив объектов, которые определяют скорость движения каждого пузырька.

Кроме того, верхняя и нижняя части лампы будут непрозрачными, из-за чего здесь пузырьки не будут видны. Поверх клипов пузырьков будет помешено изображение полупрозрачного стекла.

При использовании команд attachMovie или duplicateMovieClip необходимо указать уровень нового клипа. Уровень определяет порядок перекрывания клипов. Все новые клипы будут помешены перед существующими. Это значит, что пузырьки будут располагаться перед изображениями верхней, нижней и прозрачной частей лавовой лампы. С помощью команды duplicateMovieClip вы можете создать новые копии этих трех изображений, которые будут помешены поверх пузырьков.

Приведем код функции initLamp:

function initLamp() {
    // Инициализируем переменные, обозначающие верхнюю и нижнюю
    // координаты лавовой лампы по оси Y.
    top = 0;
    bottom = 300;
    // Создаем экземпляры клипа, содержащего пузырек.
    numBubbles = 20;
    for (i = 0; i < numBubbles; i++) {
        attachMovie("bubble", "Bubble" + i, i);
    }
    // Дублируем изображения стекла, низа и верха лампы, чтобы // они оказались над пузырьками.
    duplicateMovieClip("Glass", "Glass", i + +);
    duplicateMovieClip("Top", "Top", i++);
    duplicateMovieClip("Bottom", "Bottom", i++);
    // Создаем объекты, содержащие значение скорости пузырьков.
    bubbles = new Array();
    for (i = 0; i < numBubbles; i++) {
        bubbles[i] = {
            speed: 0
        };
    }

После того как все элементы подготовлены, воспроизведение ролика осуществляется по следующему принципу: время от времени вызывается функция, которая обновляет местоположение пузырьков и создает новые. Клип, расположенный за пределами рабочего поля, вызывает функцию moveBubbles в каждом событии enter Frame.

Функция moveBubbles задает перемещение пузырьков вверх или вниз и их остановку в верхней или нижней части ролика, а также в одном случае из 30 вызывает функцию newBubble для создания нового пузырька.

Небольшие объекты можно создавать при помощи обычных скобок как видно из последней строки функции initLamp: bubbles [1]= {speed:0}. К содержанию таких объектов можно затем обратиться при помощи точечного синтаксиса: bubbles [0] .speed. При этом ваш код станет более разборчивым, а элемент переменной или массива, сможет состоять из нескольких частей. Например, вы можете записать строку myobject = {speed: б, weight: 40, clipname: "clip1"}, а затем для получения значений использовать синтаксис myObject.speed. Такой объект аналогичен структуре из языков высокого уровня, например С или Pascal.

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