Вчера мы рассмотрели, как в Simple3D можно создавать простые трёхмерные примитивы. А сегодня более подробно остановимся на загрузке в flash-приложения 3D-моделей в формате ASE.
Но сперва нам нужна сама модель. Пусть это будет что-то достаточно простое. Например, сфера (файл world.ase).
Код ActionScript 3.0:
/*
импорт классов
*/
import com.simple3d.loaders.*;
import flash.events.Event;
/*
создаём объект класса ASE
в качестве единственного параметра указываем коэффициент масштабирования модели
*/
var ase:ASE = new ASE(5);
/*
окрашиваем модель в красный цвет
*/
ase.color = 0xff0000;
/*
позиционируем модель на сцене флеш-ролика
*/
ase.x = 275;
ase.y = 200;
/*
добавляем модель на сцену флеш-ролика
*/
addChild(ase);
/*
поворачиваем объект
*/
ase.rotationX = -90;
/*
загружаем 3D-модель
*/
ase.loadFile("world.ase");
/*
функция, которая будет вызвана после загрузки ASE-модели
*/
ase.addEventListener(ASE.LOAD_COMPLETE, loadComplete);
function loadComplete(event:Event):void
{
addEventListener(Event.ENTER_FRAME, render);
}
/*
вращаем модель
*/
function render(event:Event):void
{
ase.rotationY++;
ase.render();
}
Результат:
Да, смотрится странно... Но давайте добавим нашей сфере текстуру (как и в случае с примитивами, в качестве текстуры надо использовать объект класса BitmapData). Текстуру возьмём из вчерашнего урока:
Итак, добавляем текстуру...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.simple3d.loaders.*;
import flash.events.Event;
/*
создаём объект класса ASE
первый параметр отвечает за масштабирование модели
второй параметр - это текстура
*/
var ase:ASE = new ASE(5,new Earthmap());
/*
окрашиваем модель в красный цвет
*/
ase.color = 0xff0000;
/*
позиционируем модель на сцене флеш-ролика
*/
ase.x = 275;
ase.y = 200;
/*
добавляем модель на сцену флеш-ролика
*/
addChild(ase);
/*
поворачиваем объект
*/
ase.rotationX = -90;
/*
загружаем 3D-модель
*/
ase.loadFile("world.ase");
/*
функция, которая будет вызвана после загрузки ASE-модели
*/
ase.addEventListener(ASE.LOAD_COMPLETE, loadComplete);
function loadComplete(event:Event):void
{
addEventListener(Event.ENTER_FRAME, render);
}
/*
вращаем модель
*/
function render(event:Event):void
{
ase.rotationY++;
ase.render();
}
Результат:
Конечно, Земли получилась немного ... помятой :-) Дело в том, что мы использовали максимально упрощённую модель сферы. Но тут важен сам принцип работы, а не красота результата.
Скачать исходники к данному уроку можно здесь (fla под Adobe Flash CS5.5 + файл world.ase).