Блог Yuri

Ещё раз об Android и расширениях для OpenFL

Сохраняю и заодно делюсь результатами небольших исследований, проведенных при разработке очередного приложения, в качестве первой цели которого был выбран Android.

1. Одна простая, но неизвестная мне раньше вещь, то что для реакции на события типа onPause и onResume в Android в OpenFL удобнее всего использовать кросс-платформенные события Event.DEACTIVATE и Event.ACTIVATE соответственно. В iOS они должны отработать также.

2. Обмен данными с нативной частью. Как выяснилось, сейчас это стало делать гораздо проще. Очень помогает inthebox-macros - макрос позволяющий сильно упростить написание вызовов нативных методов из Haxe. Я правда взял пока вот этот его форк, из-за одной исправленной ошибки в нем.

Прототип парсера логов Skype чата на Haxe

Просто оставлю эту ссылку здесь: http://try.haxe.org/#30E35
Там прототип парсера логов из чата в Skype, которым я иногда пользуюсь для себя и чтобы быстро почистить полезный с моей тз кусок чата и выкинуть его в этот раздел форума: http://haxe.ru/forums/raznoe/logi-chata (кстати, мне жаль немного, что я один пока пытаюсь увековечивать (и делать доступными поисковикам) куски чата так. Особенно если вы задали там вопрос, а вам полезно ответили, было бы хорошо потратить пару минут на то, чтобы расшарить пользу с остальным миром.)

Пользуйтесь тоже на здоровье. Достаточно вставить нужный кусок в содержимое переменной log и нажать Run (если кусок большой, после этого еще придется нажать Fullscreen, чтобы увидеть всё)

Haxe 3.1

Состоялся официальный релиз новой версии Haxe 3.1.0

Основным фокусом этого релиза стало улучшение стабильности и исправление багов.
Тем не менее, не обошлось и без новых функций и возможностей языка. С полным списком изменений можно ознакомиться как обычно на http://haxe.org/file/CHANGES.txt
А суть нескольких новых фич уже описал в своем обзоре Даниил Коростелев (@nadako), который, кстати, стал одним из контрибьюторов Haxe и автором части изменений, представленных в только что вышедшей версии.

Эта версия Haxe также поставляется с обновленным клиентом haxelib, в котором было произведено несколько исправлений и улучшений, по сравнению с тем, что поставлялся с Haxe 3.0.

Также заменили инструмент для генерации документации к коду на Haxe. На смену устаревшему haxedoc пришел более продвинутый и современный Dox. Его обновленная версия скоро появится и на haxelib,

Как обычно, вся информация и ссылки для скачивания на http://haxe.org/download.

Сборка под Android при апгрейде до OpenFL 1.1.0

Если у кого-то возникли сложности со сборкой под Android с новым OpenFL (1.1.0) и после доустановки всех новых либ (hxtools, hxlibc...) и на окончании сборки стало выдавать что-то типа:

BUILD FAILED
C:\Android SDK\tools\ant\build.xml:892: The following error occurred while executing this line:
C:\Android SDK\tools\ant\build.xml:894: The following error occurred while executing this line:
C:\Android SDK\tools\ant\build.xml:906: The following error occurred while executing this line:
C:\Android SDK\tools\ant\build.xml:284: null returned: 2

не пугайтесь, просто удалите папку bin/android в своем проекте и пересоберите заново. Все должно собраться нормально.

Знакомимся с Firmament

Недавно Jordan Wambaugh выпустил вторую версию своего движка для написания игр - Firmament. В рамках знакомства с движком я немного помог ему с тестированием и фиксом ошибки с генерацией файла проекта для FD, ну а полученную в процессе информацию и основы для быстрого ознакомления с ним, решил изложить здесь. На память, да и может пригодится кому.

Итак, Firmament - это движок для быстрой и простой разработки 2D-игр.
Автор пока выделяет 3 основные черты:

Box2D на NME?

Попытался портировать туда свою любимую обертку вокруг Box2D - QuickBox2D и столкнулся с рядом траблов, один из которых наличие нескольких разных портов.

Шаблоны приложения для NME -> Android

По этой статье prevent android from dimming (w/ haxe and nme)
Этот путь подходит для быстрого включения в свой NME проект простых нативных функций или настроек Android, без использования расширений.

1. Создаем файл MainActivity.java в папке проекта, который и будет шаблоном.

Предотвращение угасания экрана:

package ::APP_PACKAGE::;

import android.os.Bundle;
import android.view.WindowManager;

public class MainActivity extends org.haxe.nme.GameActivity {

         protected void onCreate(Bundle state) {
                super.onCreate(state);
                getWindow().addFlags( WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Новый дизайн haXe.org

На haXe.org обновился дизайн. По моему стало лучше, более представительно и современно что-ли.
Новую главную страницу перевел вторым после китайцев, почти одновременно с японцами. :)

NME - gm2d - Android - iOS... Настройка среды для кросс-платформенной разработки

Внимание! На момент эта статья уже не актуальна для тех, кто хочет просто установить стабильную версию и начать ей пользоваться. Сейчас всё гораздо проще.
Эта инфа теперь может пригодиться тем, кто хочет устанавливать и собирать версию из СВН или тем, кто хочет чуть глубже разобраться от каких мучений их избавил install-tool который сейчас входит в NME.

Публикую плоды своих изысканий и тестов настройки среды для создания кросс-платформенных проектов на haXe, позволяющих собирать из одного кода приложения для Android, iOS, webOS и конечно стандартных для haXe flash, c++ ...
Основано в основном на статьях с http://gamehaxe.com и на собственном опыте. На момент поставил такую среду на двух машинах и успешно собираю приложения для Android. В iOS тоже собираю, но с ним не всё так гладко пока.
В общем делюсь тем, с чем успел разобраться сам. Итак поехали:

  1. Если вдруг кто еще не поставил, качаем и ставим haXe: http://haxe.org/download
  2. Ставим hxcpp, nme, gm2d через haxelib:
  3. в консоли:

    haxelib install hxcpp
    haxelib install nme
    haxelib install gm2d

    эти первые два шага идентичны и для установки на Mac и на Linux (на Mac нужно еще запустить @haxelib setup@ перед установкой либ)
    дальше то, что связано с компиляций C++ нужно смотреть для каждой отдельной платформы

  4. качаем и ставим VisualStudio C++ Express. Она нужна hxcpp для компиляции сгенеренного C++ кода
  5. Update: Всё! Новые версии NME и HXCPP вышли на haxelib. так что остальную часть этого раздела можно уже не читать, а переходить сразу к настройке и сборке проекта.

Ссылки по NME и install tool

Сюда сбрасываю последние ссылки связанные c NME, о его установке, настройке и компиляции для Andriod и iOS. Надо в этом деле разобраться. Приглашаю интересующихся темой присоединяться.

NME - gm2d - Android - iOS... Настройка среды для кросс-платформенной разработки
(по-русски, 16.08, я;))

http://www.joshuagranick.com/blog/2011/08/19/haxe-nme-screencast-is-now-... - Haxe NME Screencast (Joshua Granick)

http://www.joshuagranick.com/blog/2011/07/14/android-ios-webos-and-more-... - (Joshua Granick) - 14 июля
http://lists.motion-twin.com/pipermail/haxe/2011-July/045405.html - Update on the install tool (Joshua Granick) - 13 июля

TypedDictionary вместо Dictionary

Портируя одну библиотеку с AS3 на haXe, пришел к выводу, что в последнем вместо класса flash.utils.Dictionary стоит использовать flash.utils.TypedDictionary, в первую очередь из-за того, что в haXe только типизированный словарь реализует Iterator, т.е. его элементы можно перебрать в цикле типа for (i in dict).

MochiAds для игр на haXe

Тем кто пишет или собирается писать Flash игры на haXe может пригодиться небольшое руководство по использованию MochiAds в haXe, автор которого - Viktor Hesselbom. Описание того, как из MochiAds API для as3 сделать исходники для haXe, я позволил себе перевести для тех, кому это может понадобиться:

Listener клавиатуры на stage в flash9

Иногда бывает удобно использовать listener слушающий события клавиатуры глобально, т.е. во всём приложении (например при создании flash игр). В flash8 с этим не возникает особых проблем, но в flash9 есть баг, в результате которого при удалении со сцены объекта, на котором был фокус, события клавиатуры перестают отлавливаться и сценой в целом, так как фокус в таком случае теряет и stage.

Иногда может помочь простой принудительный возврат фокуса объекту stage:
stage.focus = stage;

Нас становится больше

Рад был недавно узнать, что среди русскоязычных любителей haXe у меня есть тёзка, который также участвует в переводах на haXe.org под псевдонимом yzh44yzh, и под этим же ником ведёт свой сайт о программировании под флэш-платформу, где публикует также материалы и переводы связанные с haXe. На данный момент это перевод статьи "Оптимизация производительности для Flash 9" и перевод первых частей из "Professional haXe and Neko".

Ну а теперь я рад приветствовать Yzh среди участников, а также авторов haXe.ru. Нас становится больше, а это значит, что русскоязычное haXe сообщество пусть пока очень медленно, но верно растёт. )

RSS-материал