Cross-platform

JetBrains Astella IDE и haXe

Вот здесь можно проголосовать за внедрение haXe - плагина в Astella. Собственно уже появилась информация, что разработка плагина будет продолжена. Начал его создание Федор Коротков ( https://github.com/fkorotkov/haXe-plugin ), за что ему большое хаксерское спасибо.)

Для тех, кто не в курсе: Astella это новая IDE от компании JetBrains, уже широко известной по IntelliJ IDEA и ряду других качественных продуктов.
Собственно, Astella, это "дочка" IDEA, предназначенная для разработки приложений на ActionScript, Flex, AIR и HTML5.
Очень рекомендую попробовать ее уже сейчас всем, кто пишет на AS3, тем более пока идет Early Access период, она бесплатна.
Скачать версию Astella для вашей OS.

Релиз моего порта Flixel

Привет всем!
Последний месяц я в свободное время занимался допиливанием порта Flixel v2.55 (движка для создания 2d-игр) на haxe. Отличительной особенностью этого порта является его ориентация на кроссплатформенность (flash и c++). Специально для этого была переработана система рендеринга (для c++), которая теперь использует метод drawTiles().
Репозиторий проекта находится здесь: https://github.com/Beeblerox/HaxeFlixel. Там же лежит порт Mode demo.

Релиз Nme 3.1

- куча исправлений
- сборка для html5 "из коробки"
- новое апи с проверкой типов ассетов nme.Assets
- поддержка нативных расширений
- команда nme setup для установки всего дополнительно необходимого для сборки проектов (например nme setup webos)
- поддержка сертификатов для android market (раньше приложение можно было подписать только отладочным ключом)
- nme.net.SharedObject для всех платформ
и многое другое

всем использующим рекомендуется сделать haxelib upgrade

Релиз haXe 2.08

Вышел haXe 2.08!
Это будет последний релиз в ветке 2.*. Следующий релиз, который пока планируется на весну 2012 будет уже называться haXe 3.0.

Что нового в haXe 2.08:

  • Серьезные улучшения в качестве получаемого js-кода в haxe -> JavaScript. (а для тех, кого и в нем что-то не устроит возможность написать собственный js-генератор с помощью макросов)
  • js.JQuery теперь стал частью стандартной библиотеки. С помощью нового тега метаданных @:overload в нем поддерживается полностью типизированный доступ.
  • весь новый API Flash Player 11 теперь доступен, с высокоуровневым haXe доступом к 3D шейдерам через HxSL а также теперь можно напрямую включать растровые изображения с помощью :
    @:bitmap("file.png") class File extends flash.display.BitmapData {}
  • два новых API для разработки на стороне сервера: URL Dispatcher и новая версия SPOD позволяющая напрямую писать SQL как haXe выражения (см. SPOD Macros)
  • множество улучшений в Макросах

Релиз NME 3.0 и HXCPP 2.08 на haxelib

Важный релиз: на haxelib обновились версии библиотек NME и HXCPP.
Особенно важен релиз NME 3.0. Главное новшество там - встроенный "install-tool" который позволяет легко собирать проекты с одним базовым кодом для разных платформ - от flash до iOS и Android. Подробнее об этом можно почитать здесь: http://haxe.ru/nme-gm2d-setup, несколько ссылок по теме я насобирал здесь: http://haxe.ru/node/338
И еще у NME недавно появился офсайт: http://haxenme.org/ там пока немного информации, но все коротко и ясно для старта.

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

Публикую плоды своих изысканий и тестов настройки среды для создания кросс-платформенных проектов на 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 июля

Новости прошедшей недели

Как все уже знают, на прошлых выходных состоялась конференция haxecon, в рамках которой обсуждались вопросы о текущем положении и будущем данной платформы. Докладов было немного, но все они довольно интересны.
Первоначально планировалось, что будет осуществляться вещание с конференции, но из-за возникших проблем с доставкой оборудования это оказалось невозможным. К счастью были сделаны видеозаписи докладов, а сегодня они стали доступны здесь.

Полиморфные функции. Библиотека. Версия 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>"; },

haXe 2.07

Новая стабильная версия haXe - 2.07 опубликована и доступна для скачивания / обновления.

Самые важные изменения :
- макросы : http://haxe.org/manual/macros - другие источники информации: http://ncannasse.fr/blog/haxe_got_macros,
- flash9 API обновлен до совместимости с версиями flash player 10.1 и 10.2
- избавление от неиспользуемых функций на этапе компиляции с помощью --dead-code-elimination
- flash9: исправлена загрузка другого haXe SWF
- большое увеличение скорости компилятора для внутреннего автодополнения
- чистка, благодаря которой обеспечен более аккуратный и читаемый вывод JS/CPP/PHP
- собственный генератор js кода : макросы могут быть использованы в частности для написания собственного js - генератора, см. haxe/std/haxe/macros/DefaultJSGenerator для примера

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

Я написал класс полиморфных функций и решил поделится. Чтобы понять как задается сигнатура, рекомендую посмотреть 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;
                }]
                ,

Релиз Eclihx 0.3.0

Опубликован новый релиз Eclihx 0.3.0 - IDE для программирования на haXe, на основе Eclipse.
Автор - Николай Красько пригласил всех haxe-разработчиков к тестированию новой версии.

Полный список возможностей Eclihx 0.3.0:

  • Навигатор по проектам
  • Автодополнение в haXe коде (с опцией haxe --display).
  • Установка путей для автодополнения и библиотек в hxml-файле
  • Сборка проекта с hxml-файлом.
  • Простая навигация по расположению ошибок при сборке.
  • Подсветка синтаксиса и форматирование haxe кода.

Дайджест: Ressy, Stax, Hydrax, Flixel-Haxe

Очередной небольшой дайджест новых и не очень библиотек для haXe:

Ressy - менеджер ресурсов для haXe.
Позволяет получать доступ к ресурсам по аналогии с [Embed] в AS3 используя loader mode (для загрузки внешних ресурсов) или embed mode (для внедрения ресурсов в swf)
http://github.com/alijaya/ressy

Stax
Stax это новая стандартная библиотека для haXe созданная для разработчиков, которые предпочитают декларативное программирование и для которых скорость разработки важнее чем размер программы и ее скорость.
http://github.com/jdegoes/stax

Константы и условная компиляция

Я глубоко убеждён, что константные типы недооцениваются разработчиками компиляторов и, как итог, разработчиками. Константы должны задавать не просто "неизменяемые" данные с удобным доступом, но и участвовать в прекомпиляции (условной компиляции).

RSS-материал