Задержаться до конца не позволили обстоятельства, ибо, потратить личное время в выходные - слишком большая жертва для семейного человека, работающего пять дней в неделю 8 часов вне дома, а то и дома по вечерам (Эх, в будни бы проводили с утреца и хоть до самого вечера).
На этот раз всё было скромно. На входе девушки не раздавали именных бэйджиков, не было громких слов и именитых гостей. Да и гостей вобщем-то было не так много. Мне показалось, даже меньше чем на первой встрече.
Начал встречу, как всегда, Артемий, и анонсировал проект Adobe и иже с ним - портал Flashawards - несколько кривовато работающий (позже понял почему такое ощущение - объект флэш криво вставлен в HTML и в IE появляется злочастная рамочка), но вполне симпатичный, посвященный Первому профессиональному flash-конкурсу в России. Для начала, нашему вниманию был представлен призванный вдохновить всех флэшеров, забавный видео-ролик с зомбирующим образом быстро сменяющимися кадрами под чудесную музыку Save the Robots (Members Of Mayday), представляющий работы победителей предыдущего конкурса. Затем были вручены подарочки (обещаные на второй встрече) и Артемий обмолвился о скором выходе 3го FlexBuilder!
Цель моего сегодняшнего визита - послушать доклад Александра Козловского "Простой путь создания трёхмерного AIR приложения". Анонс был настолько завлекателен, что, казалось, только ради одного этого доклада стоило сорваться - анонсировалось и Papervision3D и создание AIR-приложения.
Я не буду обсуждать сам доклад - не имею такого права, т.к. сам не набрался сил и смелости что-либо вообще подготовить и докладывать.В ходе доклада довольно подробно было продемонстрировано создание AIR-приложения и несколько поверхностно - использование Papervision3D.
Основные (лично для меня) моменты по созданию AIR приложения:
- Конфигурирование AIR-приложения. Все настройки хранятся в файле PROJECTNAME-app.xml. Важные для нас теги:
filename - имя генерируемого файла.
name - имя приложения (ВНИМАНИЕ - оно где-то в конце файла дублируется, что может вызвать недопонимание в процессе отладки).
visible - будет ли видимым главное окно после старта.
И другие - аналогично - пояснения есть для каждого в комментариях. - Если нам нужно приложение в виде окна с тулбаром и тому подобными примочками, мы наследуем главный класс нашего приложения от mx.WindowedApplication. Если же нам всё это не нужно и мы хотим отсутствия всякого фона между нашей графикой и десктопом - просто от mx.Application.
- Создание tray-иконок для Windows и Apple платформ отличается. Если в Windows это место называется tray, то в Apple - это Dock. Соответственно, Александр предлагает нам проверять такие параметры как NativeApplication.supportsDockIcon и NativeApplication.supportsSystemTrayIcon. Затем, используя класс NativeMenu и иже с ним, мы создаем меню. ВАЖНО: Иконку лучше убирать принудительно, т.к. операционная система не всегда это делает самостоятельно. Для этого достаточно сделать
NativeApplication.icon.bitmaps=[];
. - Для доступа к главному окну, используем SystemManager.Stage.NativeWindow.
- Для отлова Drag'n'Drop нам понадобятся события для ViewPort3D:
NATIVE_DRAG_ENTER - вход мыши с драг'н'дроп-содержимым.
NATIVE_DRAG_DROP - отпускание мыши с драг'н'дроп-содержимым.
Кроме того, пользуется событие ADDED_TO_STAGE для инициализации. - Важное замечание по Drag'n'Drop: используя объект события
NativeDragEvent.Clipboard.getData();
можно получить переданное драг'н'дроп-содержимое. Дело в том, что при Drag'n'Drop-перетаскивании, данные складируются в буфере Clipboard, хотя, при этом данные, запомненные, к примеру, по Contrl+C не теряют своей актуальности. - Сохранение файла:
Stream=new FileStream();
f=new File(File.applicationDirectory.nativePath+'...');
Где File.applicationDirectory.nativePath - текущая директория исполняемого приложения.Stream.open(f, FileMode.WRITE);
Stream.WriteMultiByte("...data...");
Stream.close();
По Papervision3D следующие заметки:
- Основные компоненты, которые необходимо создать и инициализировать: BasicRendererEngine - движок.
Viewport3D - наследник Sprite для рендера изображения.
Другие объекты - Scene3D, Camera (Camera.target - устанавливает объект, за которым будет наблюдать камера)
Другие заметки:
- Для прелоадера/сплэш-скрина используем объект-потомок ProgressBar. По окончании загрузки, диспатчим событие COMPLETE, после чего приложение Application получит событие PRELOADER_DONE.
- Для обновления приложения используем класс Updater. Класс выполняет лишь следующую функцию - сообщает AIR, что необходимо после закрытия приложения обновить его. Александр предложил самостоятельно скачивать и обновлять приложения с использованием библиотек ZIP-архивации.
Конечно, хотелось бы увидеть более подробное изложение, и, я думаю, если бы у Александра всё получилось так, как он планировал, так бы оно и было, но - обстоятельства выше нас. Несмотря на все трудности, доклад получился очень ценным и интересным.
После доклада, Артемий предложил "ручками" потрогать флекс, под присмотром старших товарищей, всем, кто еще не лишился девственности. К сожалению, я должен был покинуть это заведение, конечно же не из страха дефлорации - ибо уже флекс посетил меня. Я был бы очень рад попрактиковаться в создании скинов для компонентов и осветить для себя несколько вопросов по байндингу. Но, видимо, придется это сделать самостоятельно.
В итоге, впечатление от встречи однозначно - Коллеги, хватит веселиться - настало время потрудиться. Наступили рабочие будни.
* * *
Исходники того, что демонстрировал Александр на RAFPUG-3 здесь. Про обновление AIR-приложения статья здесь (уже в "Чужой тетради").
Комментариев нет:
Отправить комментарий