Показаны сообщения с ярлыком AS3. Показать все сообщения
Показаны сообщения с ярлыком AS3. Показать все сообщения

среда, 18 января 2012 г.

stage3D в ActionScript, история начинается...

Посмотрел немного на шейдеры и "обилие" информации в интернете о реализации эффектов в шейдерах с иcпользованием AGAL (Adobe Graphics Assembly Language) и решил немного поизучать. Создал тестовый образец - вращающийся кубик, на основе которого можно попробовать небольшие эксперименты для себя (чтобы потом не забыть).

Для написания кода ActionScript использую FlashDevelop. Чтобы создать простейшее приложение - вращающийся кубик с разноцветными гранями, необходимо создать новый проект, за основу выбрав AS3 Project. Затем из меню Project выбрать пункт Properties и в списке версии платформы выбрать 11.0 и нажать OK.

пятница, 16 декабря 2011 г.

Особенности ActionScript и не только

Одной из особенностью ActionScript, на которую стоит обратить внимание - это такая же, как и в JavaScript, передача объектов по ссылке (by reference), то есть при создании двух объектов и присваивании одного другому, изменение свойств второго объекта повлечет за собой изменение свойств первого объекта. Функция клонирования из JS понадобится и в AS3.
Попробую сделать две версии: с использованием встроенных объектов пространства имен flash.geom (Matrix3D, Vector3D и т.д.) и грубых примитивов - аналогов.
Потом будут тесты, по итогам которых останется наиболее производительный вариант.


четверг, 15 декабря 2011 г.

Начало преобразования с JavaScript в ActionScript

Начало

Ну вот, началось...

public class Main extends Sprite {
        var sc:Scene;
        public function Main():void {
            if (stage)
                init();
            else
                addEventListener(Event.ADDED_TO_STAGE, init);
        }
        private function init(e:Event = null):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            sc = new Scene();
            var req:URLRequest = new URLRequest("http://имя_домена/test/models/p.obj");
            req.method = URLRequestMethod.POST;
            var load:URLLoader = new URLLoader();
            load.addEventListener(Event.COMPLETE, completeHandler);
            try {
                load.load(req);
            } catch (err:Error){
                trace(err.message);
            }
        }
        private function completeHandler(event:Event):void {
            sc.loadOBJ(event.target.data);
        }
}


среда, 14 декабря 2011 г.

Классы UrlRequest и UrlLoader в AS3

Начало 

Для загрузки obj-файла извне необходимо совсем мало кода:

var req:URLRequest = new URLRequest("http://имя_домена/test/models/p.obj");
req.method = URLRequestMethod.POST;
var load:URLLoader = new URLLoader();
load.addEventListener(Event.COMPLETE, completeHandler);
try {
       load.load(req);
}catch (err:Error) {
       trace(err.message);
}



и:

private function completeHandler(event:Event):void {
       trace(event.target.data);
}

Перенос 3D движка с Javascript на ActionScript

Решился на перенос кода. Несмотря на обилие готовых движков, наподобие Sandy, Away3D, Papervision3D и прочих. Не знаю, в чем причина, возможно, в излишнем объектно-ориентированном подходе. Многие библиотеки на ActionScript перегружены обилием различных классов на все случаи жизни. Например, использование центральной перспективной проекции считаю наиболее удачным способом отображения трехмерных объектов, причем предпочитаю строить проекцию не в точку с координатами (0,0,0), а в точку (0,0,с). В связи с этим предпочтением, реализация opengl'евского gluLookAt немного другая. Центр сцены переносится не в координаты позиции наблюдателя, а в координаты точки наблюдения (данная точка лежит по вектору направления взгляда на определенном расстоянии).
Поэтому приступим...
Используемые инструменты: FlashDevelop.
Платформы: FP 9.0, FP10.0 и FP11. (выбор таких платформ обоснован способом дальнейшего воспроизведения графики - методы moveTo, lineTo (FP9), drawPath и drawTriangles (FP10). Ну и конечно аппаратная поддержка графики в FP11
Понравилось высказывание от Adobe:
For developers wishing to leverage their ActionScript skills, choose one of the 2D or 3D frameworks below.