Блоги

Привет

Последнее время я много работаю с haXe, поэтому решил попробовать писать о своём опыте где-нибудь. Например тут. Буду писать о самом haXe, о разработке на нём игр, об опыте портирования оных на iPhone, про портирование различных as3-библиотек на haXe, про опыт разработки сайта и о прочем разном.
Но это чуть попозже, а это просто пост знакомства. Так что всем привет и приятно познакомится. Будем с вами дружить. (:

Начинаем работать с hxcpp (haxe c++) и Visual Studio C++ Express

Как я писал ранее, теперь haxe можно компилировать в c++ программы. Однако в интернете я нашел только один источник, касающийся связки haxe и c++ (http://blog.touchmypixel.com/2009/04/our-possible-haxe-c-plans/). Причем данный материал на английском языке и несколько устарел, т.к. ориентирован на версии haxe 2.03 и hxcpp 0.4. На момент же написания данного поста мы имеем haxe 2.04 (уже со встроенной поддержкой с++) и hxcpp 1.0.5, и взаимодействуют они уже немного по-другому.
Мне пришлось немного понервничать, устанавливая все это добро, поэтому я и решил поделится опытом. Приступаем к установке...

Вышел haxe 2.04

26 июля вышел haXe 2.04. Основное нововведение - поддержка с++ (спасибо стараниям Хью Сандерсона http://gamehaxe.com/).
Основным преимуществом программ на с++ является высокая производительность. Плюс мы еще на шаг ближе к флэш-играм на iPhone http://gamehaxe.com/2009/07/28/haxe-iphone-cpp-at-last/.
Что необходимо для того, чтобы начать работать с новой платформой, можно почитать здесь http://blog.touchmypixel.com/2009/04/our-possible-haxe-c-plans/ (на английском).
http://ncannasse.fr/blog/haxe_2.04 - здесь создатель языка haXe показывает классический пример "Hello world" для с++.

MochiAds для игр на haXe

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

К С И Н О — наш прокт на haXe

Сделали систему наблюдения за животными «К С И Н О». Интерфейс пользователя сделан на haXe.

Жду комментарии.

Баг в Haxe

Нашел один интиресный баг в haxe
main.hx:

import js.Dom;
import js.Lib;
import classes.DisplayObject;
/**
 * ...
 * @author Ekstazi
 */


class Main
{
        static var _logo:Dynamic= new DisplayObject('div');
       
        static function main()
        {
        }
}

displayobject.hx:
package classes;
import js.Dom;
//import js.HtmlDom;
import js.Lib;

class DisplayObject
{
        var obj:HtmlDom;
        public function new(name:Dynamic)
        {
                Lib.window.onload = function(e:Dynamic) {
                        Lib.window.alert(untyped __js__('typeof(name)'));
                }
                obj = Lib.document.createElement(name);
        }
       
        public function addChild(child:HtmlDom) {
                obj.appendChild(child);
                //obj.
        }
       
}

Вызывает ошибку, причина в том, что объявление статических переменных идет перед кодом:
js.Lib.document = document;
js.Lib.window = window;
js.Lib.onerror = null;

Влияние Haxe

Haxe->flash странно на меня подействовал, пишу на php - не в своей стихии, пишу на haxe->javascript - не хватает многих вещей которые были под флэш платформу. Например, нельзя просто взять и сделать lib.current.addChild(someObj), вместо этого:

package classes;
import js.Lib;
import js.Dom;

class Logo
{
        public var displayObj:HtmlDom;
        public function new()
        {
                displayObj = Lib.document.createElement('div');
        }
}

А потом в main:
lib.document.appendChild(logo.displayObj);

ArrayAccess не работает в as3 ?

package api;
import flash.display.Sprite;

class Preview extends Sprite, implements ArrayAccess<String>
{
        var data:Array<Thumb>;
        public function new(sW:Float,sH:Float)
        {
                super();
        }
        public function add(url:String) {
        }
       
        public function scroll(items:Int) {
        }
        public function __resolve(s:String) {
                return s;
        }
}

Простой пример, но, flash player ругается ошибкой class not found ArrayAccess. На сколько я понимаю, в более ранних версиях haxe работала данная фича ? Или это зависит только от плеера ? Проверял на 9-м и 10-м.

Странно

Довольно странно, изучая исходники пакета flash , класса boot столкнулся с интересной особенностью.в классе boot есть определение функции

        public static function __instanceof( v : Dynamic, t : Dynamic ) {
                try {
                        if( t == Dynamic )
                                return true;
                        return untyped __is__(v,t);
                } catch( e : Dynamic ) {
                }
                return false;
        }

Но, при вызове не срабатывает - flash.Boot.__instanceof(obj1,typedef1);

Кто-нибудь

Может кто нибудь подскажет мне как в haxe написать нечто подобное ?
Код Javascript:

function test(a){
  if (this instanceof test) this.init();
  else return new test(a);
}
this.prototype.init=function(){
   this.bla='trulala';
}

За что я возненавидел FMS

Вообщем была у меня задача написать клиент под FMS. В итоге все закончилось с ним тем, что к удаленному FMS он конектился, а к локальному - нет. Странно, но политика безопасности тут не причем. Потратил 3 дня на изучени логов и поиска ошибок. И о чудо под haxevideo все заработало. Я не один столкнулся с такой ошибкой, гугл подсказал множество таких же нерешённых проблем. И для себя я решил полностью отказаться от FMS. В сторону red5 я не смотрел, так как не люблю тяжеловесы типо явы, да и комп слабый.

Взаимодействие haXe, Flex, AsWing

В последнее время я понял, что взаимодействие haXe и Flex -- важная тема. Во-первых, многие разработчики уже имеет свои наработки во Flex и не хотят от них отказываться, что мешает им использовать haXe. Во-вторых, так же многие разработчики хотели бы использовать Flex, как основное средство разработки, но были бы непрочь как-то использовать haXe в своих проектах. К счастью, это возможно, Николас уже делал это и описал на своем сайте. Мне осталось только перевести его статью на русский, что я и сделал.

Аналогия haxe и Linux

Haxe мощный язык, красивый и гениальный. Это как с Linux. Юзвер ставит его, мучается год, а потом счастью его нет предела!
С виндовсом все иначе, как и с флэш. Юзвер ставит, юзает, радуется пол года, может, и меньше, а потом он в западне и сам понимает это.

Haxe

Натолкнулся на странное поведение Haxe:
При использовании класса из собственного пакета ни в какую не хотят грузиться символы из библиотеки. А при использовании просто файлов-классов все нормально работает.

Проект на haXe -- наконец-то я начинаю

Наконец-то я начинаю свой open source проект на haXe.

Это прототип программы для ведения TODO-списков, организованных в нечто более сложное, чем иерархическое дерево. В основе программы -- попытка объеденить преимущества иерархического дерева и облако тегов.

описание проекта
посмотреть прототип
скачать исходники

RSS-материал