BitFive: Теперь с мультитачем

Теперь в openfl-bitfive, альтернативной реализации Flash/OpenFL API на HTML5 с фокусом на блиттинг и совместимость с мобильными устройствами, есть поддержка мультитача.
Использование аналогично Flash/AIR - вы добавляете соответствующий слушатель событий на нужный DisplayObject, и обрабатываете приходящие в него события TouchEvent:

stage.addEventListener(TouchEvent.TOUCH_BEGIN, function(e) {
	trace("Касание на (" + e.stageX + ", " + e.stageY + ")");
});

И, как и для событий мыши, остальное обрабатывается библиотекой - события доставляются в объекты автоматически, и вам не нужно беспокоиться о браузерах и устройствах с частичной или глючной поддержкой мультитача.
Ко всему прочему, вы даже можете включить преобразование событий мыши в события касаний (флагом bitfive_mouseTouches) для простоты тестирования.

Изменения уже внесены в репозиторий и haxelib, есть демка (имеет смысл запускать на мобильном устройстве), а дополнительные детали доступны в английской версии записи.

Выпущен Terrasavr!

Terrasavr

О, привет. Очередной раз прошло некоторое время с того момента, как я делал тут запись, но у меня есть новости - сегодня я рад выпустить в свет программу под названием... Terrasavr! Terrasavr это редактор сохранений для игры Terraria, отличающийся от других программ этого класса внешним видом, функциональностью, и тем фактом, что запускается он прямо на веб-странице с использованием современных веб-технологий (JS+HTML5).
Terrasavr позволяет вносить изменения в внешний вид и характеристики персонажа, манипулировать предметами, искать и сравнивать существующие в игре предметы, etc.
Более детальное техническое описание доступно в английской версии данной записи. Или можете запустить и посмотреть 🙂

Запустить Terrasavr'а

Haxe: Замена NME/Browser (Jeash)

Если вы работаете с HaxeNME то возможно вы замечали, что время от времени собранные приложения работают на JS/HTML5 не так как на остальных платформах. Или не работают вовсе. Или даже не собираются из-за какого-то недостающего кода.
Причины, в принципе, понятны - само по себе воссоздание Flash API на JavaScript+HTML5 не выглядит слишком легкой задачей, так как многие из функций существуют немного в другом виде или изначально не существуют вовсе, требуя некоторых ухищрений для реализации.
А состоящая из ухищрений кодовая база, конечно, не будет такой уж и стабильной, особенно при воссоздании функционала на основе "тестирования черного ящика".
К примеру, если вы решили на каждом кадре очищать какой-то буфер размером 640х480 пикселей с помощью BitmapData.fillRect, вы совершаете большую ошибку, так как данная функция делает это не просто попиксельно, а еще и с использованием ImageData.
В общем, данная статья посвящена замене в NME проекте browser/jeash библиотеки на свою при компиляции в JS.

Читать далее

Haxe/Neko: пример соединения клиент-сервер (чат)

В последнее время я искал примеры реализации соединений "клиент-сервер" для Haxe, но не мог найти ничего стоящего. Через некоторое время все таки удалось узнать что эти вещи реализуются посредством класса sys.net.Socket, и что непосредственно с ним никто не работал. Позже так же было выяснено, что в определенной степени этот класс должен отражать реализацию POSIX сокетов. Конечно это хорошо, но просто чтением man тут обойтись не удалось, так как в отличии от упомянутых, Haxe реализация использует исключения вместо возвращаемых значений. А исключения, в свою очередь, никто документировать не стал.

После некоторого количества экспериментов (так же известно как "метод тыка"), мною был найден полу-простой способ работы с "блокирующими" сокетами.

Читать далее