Блоги

Начинаем работать с 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-списков, организованных в нечто более сложное, чем иерархическое дерево. В основе программы -- попытка объеденить преимущества иерархического дерева и облако тегов.

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

Делаем для себя инструменты для разработки на haXe

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

Если после этой фразы вы еще сохранили любопытство, не боитесь трудностей и готовы попробовать нечто иное, то я рекомендую вам сделать инструменты разработки своими руками. Для этих целей я сам использовал Linux, Vim, Ruby, Bash. Но вам не обязательно использовать именно их.

Вам понадобится:

  • любая операционная система;
RSS-материал