Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
материал. часть2 / Розенцвейг_Adobe_Flash_Создание аркад, головоломок и других игр с помощью ActionScript.rtf
Скачиваний:
52
Добавлен:
11.02.2016
Размер:
9.87 Mб
Скачать

Углы куба

Теперь приступим к созданию восьми вершин куба. Данные о каждой вершине будем хранить в объекте со свойствами x, у и z. Весь список объектов хранится в массиве.

// Создаем массив из 8 точек для вершин куба.

function makePointsO {

points = new Array();

points[0] = {x: 30, y: 30, z: 30};

points[1] = {x: ‑30, y: 30, z: 30};

points[2] = {x: ‑30, y: ‑30, z: 30};

points[3] = {x: 30, y: ‑30, z: 30};

points[4] = {x: 30, y: ‑30, z: ‑30};

points[5] = {x: 30, y: 30, z: ‑30};

points[6] = {x: ‑30, y: 30, z: ‑30};

points[7] = {x: ‑30, y: ‑30, z: ‑30};

// Создаем восемь клипов для вершин куба.

for(i=0;i<points.length;i++) {

attachMovie("point", "point"+i, i)

}

}

Данная функция создает восемь клипов из эталона, храняшегося в библиотеке. Имя каждого клипа состоит из слова «point» и числа от 0 до 7. Число соответствует точке массива, которую представляет клип.

Примечание

Команда attachMovie создает новый клип из эталона, храняшегося в библиотеке. Однако для того, чтобы его можно было воспроизвести во Flash player или на Web‑странице, необходимо назначить ему свойство Export for ActionScript. Это можно сделать, выбрав команду Options → Linkage в окне Library. Вы также должны назначить клипу идентификатор. В данном случае назовем его "point".

Кроме точек и функции, преобразуюшей их координаты в экранное представление, необходимо ввести небольшую функцию, которая бы соединяла линиями полученные точки. Помимо параметров _x и _y каждой точки клипа, задается также параметр _alpha, описываюший уменьшение яркости точек по мере их удаления вглубь экрана.

// Устанавливаем координаты точек и их яркость на экране.

function drawPoints() {

for(i=0;i<points.length;i++) {

loc = plotPoint(points[i]);

this["point"+i]._x = loc.x;

this["point"+i]._y = loc.y;

this["point"+i]._alpha = loc.z+100;

}

}

Все вышеупомянутые функции должны помешаться в главную временную шкалу. Следуюшие строки вводят модель и подготавливают переменную rotation.

// Вызываем функцию инициализации и останавливаем

// воспроизведение ролика в этом кадре.

rotation = 0;

makePoints();

stop();

Теперь остается только обратиться к функции drawPoints. Обрашение выполняется в небольшой функции reposition. Она изменяет переменную rotation в зависимости от положения курсора в правой или левой части экрана. Функция также задает переменную plane исходя из положения курсора по вертикали. Затем функция вызывает функцию drawPoints для задания текушей позиции каждой точки.

// Изменяем позицию куба в каждом кадре.

function reposition () {

rotation += (275‑_xmouse)/1000;

plane =– (200‑_ymouse)/100;

drawPoints();

}

Функция reposition вызывается в каждом кадре из клипа, который находится за пределами рабочего поля и предназначен для запуска данной части кода при каждом его повторе.

onClipEvent(enterFrame) {

_root.reposition ( );

}

Создание ролика практически завершено. Восемь точек на экране составляют куб, который врашается и поворачивается в зависимости от того, как пользователь перемешает мышь. Ролик можно посмотреть в файле 3dcubepoints.fla, размешенном на Web‑сайте. Фрагмент этой анимации изображен на рис. 5.10.

Рисунок 5.10. Трехмерный куб, представленный восемью точками на экране

Соседние файлы в папке материал. часть2