Библиотека

Заметка о новой или обновлённой библиотеке для haXe

Reification for bindx

Доброго времени суток, %haxe_user%! Эта статью, с определенным допущением, можно назвать долгожданным продолжением первой статьи о связавании данных в хаксе.

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

Расширения для OpenFL

Здесь собираем ссылки на существующие расширения для OpenFL для различных нативных платформ - Android, iOS, Windows и т.д. Принцип добавления - новые найденные наборы или расширения добавляются в верхнюю часть соответствующих списков.

Наборы расширений

GUI-библиотеки для Haxe

Здесь собирается информация о существующих библиотеках для создания GUI - графических пользовательских интерфейсов на Haxe.

Известные и актуальные на момент:

Firmament

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

  1. Включает в себя работу с двухмерной физикой на основе Box2D
  2. Создан для быстрого создания игр, с помощью полноценного API
  3. Основан на NME и как следствие кросс-платформенный: Flash, PC, Mac, iOS, Android, HTM5...

Но я бы от себя добавил еще такие особенности:
- информация о сущностях игры, сценах, картах, тайлах и прочие конфигурации находятся в файлах на основе json, а не в коде

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

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

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

Кэширование флэш анимации

В первую очередь разрабатывалось для Flash IDE.
Чтобы MovieClip кэшировался нужно в его свойствах заменить базовый класс на AniCache.
При грамотном использовании обеспечивает огромный прирост производительности.
Объект e_bounds - будет служить для выделения нужной облости в AniCache.
https://github.com/AxGord/FlashAniCache
Проект также может служить примером разработки на haxe совместно с Flash IDE.

HaxeFlixel

HaxeFlixel - порт популярного игрового движка Flixel

установка из haxelib:

haxelib install flixel

создание шаблона для нового проекта:

haxelib run flixel -name YourProjectName -class YourProjectMainClassName -screen ProjectWidth ProjectHeight

Полезные ссылки:
http://www.haxeflixel.com/ - офсайт
Репозиторий HaxeFlixel на GitHub

http://www.haxeflixel.com/demos/flxnape - демо совместного использования HaxeFlixel и Nape. Исходники в наличии

Сборник тьюториалов по Flixel на tutsplus.com

Aswing под Nme

Прогресс китайской нации не стоит на месте - paling на haxe.org выложил ссылку на бету haXeAsWing, теоретически работающую с NME.

Когда будет время, попробую собрать.

Полиморфные функции. Библиотека. Версия 1.0

Библиотека реализующая полиморфные функции. Инструкция по установке и использованию:

haxelib install PolymorphFunction

Во FlashDevelop создаем проект, например haXe/Flash:

Заходим Project -> Properies -> Compiler Options -> Libraries
добавляем туда строчку PolymorphFunction

package ;

import flash.Lib;

enum MyEnum {q; w; e;}

class Main
{
        static var myfunc:Dynamic = PolymorphFunction.parse([
                function(a:Int, b:Int) { return a + b; },
                function(a:Int, b:Int, c:Int) { return a + b + c; },
                function(value:String) { return "Hello, " + value + "!"; },
                function(first:Float, two:String) { return Std.string(first) + " -> " + two; },
                function(p1:{ x:Int, y:Int }, p2:{ x:Int, y:Int } ){return { x:p1.x + p2.x, y:p1.y + p2.y };},
                function(arr:Array<Dynamic>) { return "This is Array<Dynamic>"; },

Полиморфные функции. Удобный класс

Я написал класс полиморфных функций и решил поделится. Чтобы понять как задается сигнатура, рекомендую посмотреть http://haxe.ru/node/274

package;
import Type;
/**
 * ...
 * @author Mr.Cheater
 */

 
class PolymorphFunction
{
        static public function create(args:Array<Array<Dynamic>>)
        {
                var hashTable = new Hash<Dynamic>();
                for (i in args) hashTable.set(Std.string(i[0]), i[1]);
                return Reflect.makeVarArgs(function (args:Array<Dynamic>):Dynamic
                {
                        return Reflect.callMethod(null, hashTable.get({
                                var signature = new Array<String>();
                                for (i in args) signature.push(Std.string(Type.typeof(i)));
                                Std.string(signature);
                        }), args);
                });
        }
}

class Main
{
        static var myfunc:Dynamic =  PolymorphFunction.create([
                //The addition of 2 Ints
                [[ValueType.TInt, ValueType.TInt],
                function(a:Int, b:Int)
                {
                        return a + b;
                }]
                ,

Nape - новая 2D физика на haXe (+AS3 версия)

У Physaxe появился интересный и многообещающий продолжатель.
В Nape - в новом и на момент активно развиваемом движке двумерной физики уже присутствует поддержка joints /constraints и немало других интересных фич, делающих его более продвинутым по сравнению с Physaxe, развитие которого остановилось довольно давно. При этом Nape унаследовал его производительность и по утверждением автора Luca Deltodesco превосходит его и в этом плане
Новый 2D движок активно использует haXe/AS3 препроцессор caxe написанный тем же автором и оптимизирован под возможности flash player 10/10.1 Кстати, в недавней заметке Luca написал, что в beta5 flash player 10.1 производительность и стабильность Nape ещё более заметно.

hxpdf - библиотека для чтения PDF файлов в haXe

Похоже Николя решил перейти на выпуск одной новой библиотеки для haXe в неделю. :)
Только я написал про hscript, а он уже объявил о релизе hxpdf - новой небольшой библиотеки для чтения/обработки содержимого pdf-файлов в haXe. Библиотека кроссплатформенная, работает и для Flash9 и для Neko.

На данный момент hxpdf поддерживает только несколько основных функций:

  • парсит содержимое PDF файла
  • понимает шифрование (только версий 2.3 и 2.4)
  • понимает фильтр FlateDecode (zlib)

По словам Николя, этого достаточно, чтобы достать нужную информацию из большинства PDF документов.

RSS-материал