android

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

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

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

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

Сборка PiratePig под Android

Всем привет. Есть весьма специфичная проблема.
На рабочем ноутбуке (intel, win7 x64) установил haxe последней версии - поставил lime и openfl. Сделал инсталляцию haxelib run lime setup android
Поставил Android SDK 16 и 19 версий апи.
Поставил Android NDK r8b
Поставил JDK последней версии - jdk1.8.0_05
Создал PiratePig проект и без каких-либо правок запустил его сборку:
haxelib run openfl test android
Все собралось и заработало - УРА.

Но вот проблема - сделал все то же самое на домашнем компе (AMD, win7 x64), и получил вот такую ошибку:

arm-linux-androideabi-g++ -olibApplicationMain-v7.so -frtti -nostdlib -Wl,-share
d,-Bsymbolic -Wl,--no-undefined -Wl,-z,noexecstack "--sysroot=C:\Development\And
roid NDK/platforms/android-9/arch-arm"
"-LC:\Development\Android NDK/platforms/a
ndroid-9/arch-arm/usr/lib"
@obj/android-v7/all_objs "C:\Development\Android NDK/
sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_static.a"
"C:\Develop

Сборка под 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 в своем проекте и пересоберите заново. Все должно собраться нормально.

Звуки в OpenFL. Форматы, кэширование для Android

Dima (deep): По моему вчерашнему вопросу про звуки в опенфл.
Для андройда надо звуки кешировать как я и предположил. Вот пример из фликселя https://github.com/HaxeFlixel/flixel/blob/dev/flixel/system/FlxAssets.hx...

         /**
         * Sound caching for android target
         */

        static public function cacheSounds():Void
        {
                #if android
                Reflect.callMethod(Assets, Reflect.field(Assets, "initialize"), []);
               
                var resourceClasses:Map<String, Dynamic> = cast Reflect.getProperty(Assets, "resourceClasses");
                var resourceTypes:Map<String, String> = cast Reflect.getProperty(Assets, "resourceTypes");
               
                if (resourceTypes != null)
                {
                        for (key in resourceTypes.keys())
                        {
                                if (resourceTypes.get(key) == "sound")
                                {        
                                        FlxG.sound.add(key);
                                }
                        }
                }
                #end
        }

OpenFL - как слушать кнопку Back на Android

Dima (deep): как в опенфл слушать нажание кнопки назад из андроида. Константы Keyboard.BACK в натив почемуто нет. Нашел что ее код вроде как 0x01000016 но не уверен
Александр: http://www.openfl.org/developer/forums/bugs/openfl-android-back-button/
Yellow: Разве там не код бекспейса?
Александр: 27 ее код
Dima (deep): 27)))
понятно. встречал и этот код
но тут http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash...
Denis Z: и как производительность на десктопе?
Александр: да, косяк
Dima (deep): вроде чтото пашет
Александр: а что пашет?
Dima (deep): 27 код. все верно
сейчасс пересоберу и проверю. но вроде будет работать
правда preventDefault снова нету
советуют юзать стопПро...
Александр:

private function stage_onKeyUp (event:KeyboardEvent):Void
{
#if android
if (event.keyCode == 27) {
event.stopImmediatePropagation ();
Lib.exit ();
}
#end
}

Сделано на Haxe. 07.13

С этого месяца попробуем ввести новый дайджест "Сделано на Haxe". В него будут собираться новости о заметных релизах новых приложений, игр, сервисов и других продуктов, созданных с помощью Haxe и основанных на нем интрументов. Итак, вот что было сделано на Haxe в июле:

Rymdkapsel - новая игра, сделанная с помощью OpenFL и вышедшая одновременно на Android и iOS. Из отзыва на ApparatMag.ru: "Великолепное, оригинальное и отличное исполненное сочетание космической стратегии, tower defence и тетриса.". Ещё одно ревью игры под названием "Rymdkapsel: минималистичная стратегия про черные монолиты" вышло также на slon.ru.

Lubos Lenco - автор Castle Siege выпустил новую игру Pexeso. Это простая казуальная игра на память, которая вышла на Google Play. В следующей версии автор планирует добавить "кроссплатформенный онлайн мультиплеер с помощью Nuggeta и OpenFL”...

Как быть?

День добрый всем.
Потихоньку осваиваю Haxe (считаю что именно таким должен был быть ActionScript4), язык нравится все больше и больше.
Есть вопросы чайника:
1) В свободное время пишу паззл игрушку (компиляция под Flash), которую планирую выкинуть на iOS, Android.
Графические ассеты рисуются во FlashIDE и подключаются в виде swc библиотеки.
Как я понимаю единственный путь на мобилки для хакса это использование NME, как быть в этом случае с флеш ассетами?
Можно ли миксовать флеш дизайн и NME в одном проекте?

2) Десктоп приложения на Haxe как делаются?

С уважением.

[Android] JNI.createStaticMethod открытие галереи девайса - приложение временами зависает

Здравствуйте
Я хочу дать возможность пользователю выбрать фото из галереи девайса.

Вот так я запускаю метод в java activity

jni_get_gallery_method = JNI.createStaticMethod("dev/div0/RailDesigner/MainActivity", "getGallery", "(Lorg/haxe/nme/HaxeObject;)V", true);
 jni_get_gallery_method([this]);

MainActivity.java

package ::APP_PACKAGE::;

 import android.app.Activity;
 import android.os.Bundle;
 import android.content.Intent;
 import android.util.Log;
 import android.net.Uri;

 import android.provider.MediaStore;
 import android.database.Cursor;

 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ByteArrayOutputStream;

 import org.haxe.nme.HaxeObject;

 public class MainActivity extends org.haxe.nme.GameActivity {
 static HaxeObject callback;

нет

NME для игры под iOS - сомнения

Всем привет

Есть большая, красивая и безнадежная идея сделать игру под широкие таблеты, работающие на iOS и Android и использовать при этом Haxe и NME.

Хотелось бы спросить - есть ли те, кому удавалось разработать полноценную гаму при помощи FlashDevelop и деплойнуть её на iOS девайс? Под "полноценностью" я подразумеваю, что там есть анимированные персонажи, звук, текст, гуи и т.п.? Неужели всё так гладко, как описывается на haxe.org, haxenme.org (т.е. накодил, отдебуглил, меняешь таргет, собираешь - готово).

Расширение

В последней версии народ из NME сделал поддержку динамической генерации аудио на SDL
(для Windows, Mac, Linux, webOS and BlackBerry)

А я вот тем временем досляпал подобное расширение для Android...
В целом, на моем телефоне работоспособно, если кто возьмется проверить буду признателен.

https://github.com/scythianfuego/nme-android-dynamicsound

Негативные комментарии привествуются.

Шаблоны приложения для 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);

Релиз NME 3.2

Вышла новая версия NME - 3.2.
Среди новых фич есть довольно вкусные, за что спасибо неугомонному Джошуа Гранику, который в последнее время стал просто главным двигателем haXe движения.

  • Добавлена встроенная поддержка SWF ассетов (Flash и целевые платформы на C++ ) Подробнее
  • Android приложения будут ставиться сразу на SD карту по умолчанию.
  • Улучшена поддержка специальных папок для всех целевых платформ
  • Пофиксили проблемы с "исчезающими объектами" при программном рендеринге.
  • Поддержка “template” файлов, перезаписывающих шаблоны по умолчанию для каждой цели.
  • URLLoader теперь поддерживает HTTP POST и SSL в целях основанных на C++.
  • Tilesheet.drawTiles теперь можно пользоваться и в Flash.
  • Поддержка джойстика для Windows, Mac and Linux.
  • Улучшена тесселяция для примитивов при аппаратном рендеринге.
  • Стало возможно добавлять дополнительные iOS фреймворки через NMML.
  • Исправили автоматическую ориентацию экрана в iOS.
  • Множество других исправлений и улучшений.

NME на Witstech A81E, Android 2.2

Всем привет!

Нужна помощь в запуске NMETemplate на Witstech A81E.
После выполнения следующей команды:
haxelib run nme test NMETemplate.nmml android
проект полностью собирается, заливается и устанавливается на девайсе, запускается, показывает только один кадр (даже с текстурами) и вылетает :( Я не разбираюсь в отладке под андройдом :( но очень бы хотел запустить NME на девайсе... Вот тут выложил лог того, что пишется в командной строке CMD

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. так что остальную часть этого раздела можно уже не читать, а переходить сразу к настройке и сборке проекта.

RSS-материал