Обозреватель

Observer

вторник, 25 марта 2008 г.

Что мы знаем о 3D-движках во Flash? //Обзор 3D Flash-технологий

Оригинал. Флэш Потрошитель

Трехмерные миры во флэше растут не по годам, а по часам. Что у нас есть сегодня?

Papervision3D
Отец большинства современных трехмерных движков для Flash. Довольно быстро развивается, имеет экспериментальные ветви разработки. Куча демок (по первой ссылке). Open Source.

Away3D
Полностью самостоятельный движок, хотя изначально базировался на коде Papervision3D, но по ходу проекта был переписан практически заново. Создан Александром Задорожным из Киева (код, насколько я знаю, редактировался в FAR'е). Содержит массу уникальных возможностей, в т. ч. для текстурирования, освещения и придания рельефа поверхностям. Признан настолько хорошим, что авторы самого Papervision3D решили включить наработки Away3D в свой основной проект. К работе над Away3D уже подключилось несколько талантливых разработчиков. Open Source.

Sandy
Известен тем, что в использовании еще проще, чем Papervision3D (не базируясь на нем ни в коей мере), хотя и не имеет такой популярности. В общем, я не очень много знаю про Sandy, но демки у него тоже красивые. Open Source.

FFilmation AS3 Flash Isometric EngineМногообещающий изометрический движок (на русском),
показывающий очень неплохую производительность. Open Source.

Игровая платформа Alternativa Platform
Платформа для трехмерных игр, разрабатываемая Группой Товарищей из Перми. За флэш отвечает Антон Волков. Движок впечатляет уникальными возможностями и перфекционистской проработкой всего на свете, имеет продуманную схему интеграции с сервером.

ZenBullets Flash Isometric 3D Game Engine
Про этот движок я знаю еще меньше, позиционируется как изометрическая игровая платформа, но демки пока весьма скромные.

SWFZ
... кажись, единственный честный рейтрейсер (отрисовка по-пиксельно)

понедельник, 24 марта 2008 г.

Создание кастомного Design-time View для своего Flex 3 компонента //Важно

Оригинал. Флэш Потрошитель

Иногда необходимо сделать кастомный Design-time Preview для компонента (это его вид в "Design View" Flex Builder-а). Для этих целей в Adobe Flex 3 SDK есть недокументированый класс mx.core.UIComponentGlobals. В этом волшебном классе лежит не менее волшебное поле designMode:Boolean.
В Design View среда Flex Builder пытается "выполнить" код и отобразить что-либо, следовательно можно прописать проверку на designMode и делать то, что хотим.
Итак:1. Возьмем ActionScript-компонент для Flex Bulder 3.2. Заоверрайдим метод createChildren():
override protected function createChildren():void {
super.createChildren();
if (UIComponentGlobals.designMode) {
//здесь мы создаем child-ы, которые будут в design mode
}
}

3. Заоверрайдим метод updateDisplayList():
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
if (UIComponentGlobals.designMode) {
//здесь мы рисуем то, что будет видно в design mode
}else {
//а здесь то, что в runtime
}
}

Вуаля! Пример компонента можно взять здесь.

воскресенье, 9 марта 2008 г.

AS2 автоматическая сборка компонентов без Flash IDE, с помощью FlashDevelop //Инструкция

Оригинал.

Да-да стоят перед некоторыми и такие задачи :)

Итак, надо:
собрать swc, включающий swf компонента, catalog.xml, asi-файлы классов.

swf должен содержать клип, ассоциированный с классом компонента и все
графические ассеты в библиотеке.

здесь помогает swfmill - пишем xml собираем swf. ( :) предварительно
пришлось поразбирать несколько swf, компиленных во FLASH IDE чтоб
понять как писать xml)

<... редакция класса ... >

компилим mtasc - с инъекцией кода (проще говоря обновляем классы в ролике)

для генерации asi используем igen из тулзов flashdevelop'a
(оказывается asi это intrinsic :) )

пишем bat-файл (запускаем его как post-build команду), нечто вроде:

rem установка переменных

set tools="C:\Documents and Settings\ddns\Local Settings\Application
Data\FlashDevelop\Tools\"

rem вызываем igen

%tools%\igen\igen -clean src bin

rem переименовываем получившиеся *.as файлы в *.asi

for /R bin\ %%A in (*.as) do if exist %%A (
erase /q bin\%%~nA.asi // если такой файлик есть то стираем его.
rename %%A %%~nA.asi
)

erase bin\3d.swc

rem архивируем winrar'ом в zip

C:\Progra~1\winrar\winrar a -afzip bin\3d -r -ep1 -m5 -x*.bat -x*.exe bin\

rem изменяем расширение на *.swc
rename bin\3d.zip 3d.swc

rem :) опционально подкладываем файлик в папку компонентов флеша.

copy /Y /B bin\3d.swc "C:\Documents and Settings\ddns\Local
Settings\Application Data\Adobe\Flash
CS3\en\Configuration\Components\"

/////////////////////


Остается нерешенным вопрос, а как бы сгенерировать автоматически catalog.xml
для компонента?
Кто-нибудь что-нибудь посоветует?

xml вида:

<componentPackage xmlns="http://www.macromedia.com/flash/swccatalog/7">
<component id="myComponent" class="ComponentClass"
implementation="libc.swf" iconFile="libc.png"
src="Component3Dworks.asi" modified="1204586771">
<movieBounds xmin="0" xmax="11000" ymin="0" ymax="8000" />
<include id="boundingBox_mc"/>
<include id="activity"/>
<exportAfter id="__Packages.ComponentClass"/>
<class id="ComponentClass" >
</class>
<class id="MovieClip" >
</class>
<asset id="boundingBox_mc" modified="1204576209">
</asset>
<asset id="activity" modified="1204578626">
</asset>
<asset id="__Packages.ComponentClass" src="ComponentClass.asi"
modified="1204586020">
</asset>
</component>