Вход/Регистрация
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
вернуться

Розенцвейг Гэри

Шрифт:

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

При использовании команд 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 в каждом событии enterFrame. Функция moveBubbles задает перемещение пузырьков вверх или вниз и их остановку в верхней или нижней части ролика, а также в одном случае из 30 вызывает функцию newBubble для создания нового пузырька.

...

Примечание

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

// Перемещаем пузырьки.

function moveBubbles {

for (i=0; i<numBubbles; i++) {

// Узнаем текущую координату.

o = _root["Bubble"+i]._y;

// Останавливаемся, если достигнута нижняя граница

// объекта "лампа".

if <(bubbles[i].speed > 0) and (y > bottom)) {

bubbles[i].speed = 0;

// Останавливаемся, если достигнута верхняя граница

// объекта.

} else if ((bubbles[i].speed < 0) and (y < top)) {

bubbles[i].speed = 0;

// Продолжаем перемещать пузырьки.

} else {

// Перемещаем.

_root["Bubble"+i]._y = y+bubbles[i].speed;

// Изменяем размеры пузырька.

height = _root["Bubble"+i]._yscale;

width = _root["Bubble"+i]._xscale;

if (height > width) height -= 1;

_root["Bubble"+i]._yscale = height;

}

}

// Создаем новый пузырек с вероятностью 1/30.

if (Math.random*30 <= 1) {

newBubble;

}

}

Функция newBubble проверяет массив bubbles на наличие неиспользуемых мест для пузырьков. Затем она создает пузырек в нижней или верхней части лампы. Размер пузырька задается случайным числом. Его длина в три раза больше, чем ширина. По мере перемещения пузырька эта разница постепенно исчезает.

function newBubble {

for (i=0; i<numBubbles; i++) {

// Находим пустое место для пузырька.

if (bubbles[i].speed == 0) {

// Создаем пузырек в верхней части лампы.

if (Math.random < .5) {

bubbles [i].speed = 1 ;

_root["Bubble"+i]._y = -40;

// Создаем пузырек в нижней части лампы.

} else {

bubbles[i].speed = -1 ;

_root ["Bubble"+i ]._y = 340;

}

// Устанавливаем размер пузырька.

size = 40+ Math. random *40;

_root["Bubble"+i]._xscale = size;

_root["Bubble"+i]._yscale = size*3;

_root["Bubble"+i]._x = 10+Math. random *80;

// Готово.

break;

}

}

}

Три вышеприведенные функции составляют основу ролика Lava Lamp, который вы можете просмотреть, запустив файл Lavalamp.fla на Web-сайте.

Другие возможности

Изображение стекла было создано аналогично пузырькам. Благодаря применению свойства альфа-прозрачности сквозь него видны пузырьки. Для того чтобы ролик вписывался в ваш сайт или проект, вы можете украсить его своим логотипом.

Игра" Жизнь"

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

  • Читать дальше
  • 1
  • ...
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: