Блоги

Как я подключал AsWing или swf-библиотеки в 2.07

Disclaimer: я из рук вон плохо знаю flash-платформу, поэтому часть моих приключений ниже может кому-то показаться странной - это смело можно списывать на то, что я чайник...

А дело было так. Пришло мне в голову перевести gui для небольшой программки с Arctic на AsWing.
И вот, разбираясь с подключением AsWing, сделал для себя несколько важных открытий (с опозданием примерно на полгода).

Семинар HaXe на территории Украина и/или Россия.

Вчера через haxe@lists.motion-twin.com задал вопрос о возможности проведения семинара
на территории Украины. Люди откликнулись, переписку добавлю завтра.

Может ли кто-нибудь пояснить/высказать мнение, если такой семинар будет
проходить в праздничные дни и не в Вашем городе, есть интерес Вам ехать?

Как для меня: я в Киеве, например семинар проходит в Одессе. Я еду.
Если в Санкт-Петербурге проводится, из Москвы поедете?

Это понятно, что если программа заинтересует, то поедем...
Я спрашивал о проведении семинара для различных уровней изучения

Scythian - Вы кто?

Я подписан на оповещение в gmail по фразе haxe.
Каждый день приходят ссылки на различные документы,
в котором есть слово haxe.
И каждый день я наблюдаю, как человек переводит полезные
англоязычные материалы сайта haxe.org на русский.
Надо отметить высокое качество перевода.
Можно узнать, кто трудится?

Здесь на карте пользователи Haxe.

Вот здесь на карте :
https://www.ohloh.net/p/haxe/map

Наш значек СЕРОГО цвета.
Чтобы твой значек отобразился в сообществе Haxe необходимо:
1. Зайти https://www.ohloh.net/p/haxe
2. Кликнуть ОБЯЗАТЕЛЬНО кнопку I use this, на фото обведена красным.
http://solovyovserhiy.colocall.com/img/i-use-this.jpg
Да, кто не зарегистрирован, то регистрация. ))

Аватар добавляйте тоже.

Планируется встреча пользователей HaXe.

Пару дней назад возникла в Одессе, и была поддержана в Париже идея о проведении
встречи users HaXe.
В Haxe mailing list письмо направил Alexander Konotop (Украина, Одесса).
Оригинал en: http://lists.motion-twin.com/pipermail/haxe/2011-February/041074.html
Оригинал с переводом: http://solovyovserhiy.colocall.com/img/meeting.jpg
В этот же день всем зарегистрированным пользователям Haxe mailing list
по всему миру Nicolas Cannasse задал вопрос о предпочтительном месте проведения
встречи. В случае, если выбор падет на Францию...
Сам Alexander Konotop, в ответ на мой e-mail с просьбой прокомментировать, сделал ещё

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

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

Оконное приложение haXe/C++

Используя написанное тут http://haxe.ru/node/210 и тут http://nanoflexer.blogspot.com/2009/09/1.html разобрался с компиляцией под haXe/C++. Прикрутил самописную визуальную библиотеку VistaGUI (очень сырую) и создал пример оконного приложения. Правда компоненты CheckBox и RadioButton сломались, но это не важно, потому что моя VistaGUI и правда очень сырая.
haXe/C++ версия:
http://cs10623.vkontakte.ru/u13476671/116385245/y_33fca01d.jpg
haXe/flash версия:
http://cs10623.vkontakte.ru/u13476671/116385245/y_9e83a1a0.jpg
Исходники:
http://free-files.at.ua/load/0-0-0-25-20

haXe -> C# & Java

http://twitter.com/cwaneck/status/15486381623091200

http://haxe.org/doc/intro
C# and Java targets are coming out soon! (from @cwaneck)

Потеря данных на сайте haXe.org

На прошлой неделе на сервере, обслуживающем Wiki-сайт haxe.org, накрылся жесткий диск. Копия БД восстановлена с сервера, на который производилась репликация. Только вот незадача, на резервном сервере не была включена поддержка юникода, и страницы, содержащие русские, китайские и японские переводы, канули в вечность. Николас пообещал что больше такого не допустят.

haXe научился компилить под Android

Не безызвестный Huge опять порадовал. На этот раз он скрестил HXCPP и Android NDK.
Статья об этом в его блоге: http://gamehaxe.com/2010/09/30/android-hxcpp-a-quickstart-guide/
У кого есть время, попробуйте пожалуйста и отпишитесь, очень интересно.

Фишка haXe, основанная на блоках

Фишка, основанная на блоках. Приведу пример.

Например мне нужен класс, в котором будет содержаться массив 10x10 из произвольных Int-ов в диапазоне 0...9. И мне всё равно как он устроен внутри. Никаких лишних функций вроде Array10x10.setup() вызывать я не хочу. Я делаю так:

class Array10x10
{
        static public var data:Array<Array<Int>>;
        static var setup =
        {
                data = new Array<Array<Int>>();
                for (i in 0...10)
                {
                        data[i] = new Array<Int>();
                        for (j in 0...10)
                                data[i][j] = Std.random(10);
                }
        }      
}

class Main
{
        static function main()
        {
                for (i in Array10x10.data) trace(i);
        }
}

Вставка внешнего ресурса (PNG, JPEG, TTF, SWF) в SWF при помощи FlashDevelop

За вставку внешнего ресурса отвечает swfmill.

ШАГ 1

Копируете файл изображения в папку вашего haXe-проекта. Файл появится в меню Project. Щёлкаете правой кнопкой и выбираете Add To Library.

ШАГ 2

Щёлкаете правой кнопкой и выбираете Options....

Убираете галочку Auto-generate ID for movieAttach() и вписываете в соответствующее поле удобное вам название класса/картинки. Если картинка находится в папке, то вы должны указать полный путь до нее folder.subfolder.image.png .

Ставите галочку Embed as a Bitmap instead of Clip.

Различное поведение функции при различных типах аргумента

Предположим нам необходимо различное поведение функции в зависимости от типа получаемого аргумента. Реализуется несколькими способоми. 1ый кажется самый простой для восприятия, а возможно и самый быстрый.

package ;

import flash.display.Shape;

import Type;

class Main
{
        static public function main()
        {
                f(true);
                f(12345);
                f(1.2345);
                f("abcdef");
                f(new Shape());
                f(f);
                f({name: "abcdef" } );
                f(null);
        }
       
        static public function f(value:Dynamic)
        {
                //1) Рабочий вариант на switch
                switch(Std.string(Type.typeof(value)))
                {
                        case "TBool":                           trace("I am Bool");
                        case "TInt":                            trace("I am Int");
                        case "TFloat":                          trace("I am Float");
                        case "TClass([class String])":          trace("I am String");

TypedDictionary вместо Dictionary

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

RSS-материал