Блог Yuri

Timer на Neko

Начал делать SWHX проект и узнал, что в Neko на данный момент отсутствует поддержка класса haxe.Timer. Точнее поддерживается только один статический его метод Timer.stamp(). Это было несколько неожиданно.

Погуглив немного, узнал что для Neko вместо него используется neko.Sys.sleep(seconds :Float);
Это сняло часть вопросов, но не все. Этому решению в некоторых случаях не хватает гибкости Timer.

В рассылке нашёл более развернутый вариант реализации таймеров в Neko, который после небольшой доработки под текущую версию, превратился у меня вот в такую функцию:

function setTimeout(action, timeout)
{
        neko.vm.Thread.create(
                function () {
                        neko.Sys.sleep(timeout);
                        action();
                }
        );
}

"Основы haXe" завершены

Подшивка статей "Основы haXe" полностью готова.
Сегодня добавил последние несколько глав переведённых ранее и сделал новый перевод относительно свежей главы про inline - ключевое слово введённое в haXe 1.17. По ходу публикации исправлял найденные в переводе неточности.

На всякий случай, напомню, что это подборка статей по основным особенностям языка haXe, созданная на основе перевода описания языка на официальном сайте. Главное отличие версии размещённой здесь, что она разбита на отдельные статьи, оглавление которых вынесено на главную страницу и каждую из которых можно комментировать, дополнять и исправлять.

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

UI компоненты BIT-101 minimal в haXe

Просто небольшая полезная инфа по использованию AS3 библиотеки компонентов BIT-101 MinimalComps от Keith Peters в haXe.
Делать для этой возможности, оказывается, почти ничего не нужно. Достаточно скачать архив с компонентами, разархивировать swc файл и запустить haxe --gen-hx-classes на полученном файле библиотеки library.swf.

Всё. После этого можно, как обычно, добавлять библиотеку к проекту с помощью -swf-lib, добавлять папку со сгенерированными haxe классами в class path -cp и пользоваться этим набором UI компонентов в своём flash приложении написанном на haXe.

Переехали на новый сервер

Сегодня благополучно перенёс haxe.ru на новый сервер и заодно обновил движок до свежей версии. На новом сервере установлено более современное обеспечение, MySQL 5, PHP 5 и так далее. Так что работать сайт теперь будет заметно быстрее и, я надеюсь, надёжнее.

Описание языка "Основы haXe"

Начал создание первой подшивки на этом сайте "Основы haXe", которая будет базироваться на моём переводе описания языка с официального сайта haXe.

Сначала хотел опубликовать всё сразу, но потом решил не торопиться и сделать это постепенно, время от времени добавляя по нескольку статей. Возможно по ходу их размещения найдутся желающие уже сейчас предложить какие-то изменения или дополнения для опубликованных частей. Да и сам по мере добавление стараюсь исправлять и улучшать качество перевода, так как изначально делал его не особо тщательно.
На данный момент доступны разделы: "Основные типы", "Классы" и "Выражения" (включающие Константы, Операции, Унарные операции и Блоки)

Делегаты и callback

В качестве ещё одного сниппета не могу не рассказать и о callback.
Тем, кто только начинает знакомиться с haXe, это весьма полезное предложение может быть и не знакомо, т.к. до недавнего времени не упоминалось в документации.
Да и сейчас добраться до него не просто. Так что линк на статью про reserved keywords в главе мануала о классах будет уместен. В статье описывается сам принцип работы callback. Переведу самое основное...

Перевод документации

Создал и перевёл страницу с оглавлением документации и тьюториалов на haxe.org.
Кстати, теперь по русскому меню стало можно добраться до статьи про Использование haXe с Flex2, которую уже довольно давно перевёл Рост.

ArrayAccess

Не помню уже было ли что-то подобное в AS. Может и было, просто я не пользовался.
Понадобилось сделать доступ к элементам некого списка, являющегося закрытым свойством класса, через его экземпляр и квадратные скобки. Решение оказалось очень простым...

Создание бинарного дерева

Ещё один интересный сниппет из рассылки.
Был задан вопрос о том, как конструировать бинарное дерево в haXe.
В ответ дали два простых варианта, каждый из которых по своему красив (лично мне понравился больше второй).

1. C помощью typedef:

typedef BinTree<T> = {
    var value : T;
    var left : BinTree<T>;
    var right : BinTree<T>;
}

Lambda.has

Как то руки до сих пор не доходили до класса Lambda, как впрочем и до многих ещё новых для меня вещей в haXe.
Но на днях в рассылке попался очень полезный метод этого класса.

Lambda.has(myList,value) - проверяет, есть ли значение value в myList.
Причём myList может быть не только списком, но и любой итерируемой структурой.

SwfMill и тег <bitmap>

В списке рассылки появилась информация о недокументированном пока теге SwfMill - bitmap и в частности о применении его для внедрения растровых изображений в swf как для Flash9, так и для haXe.
Человек, которого зовут Krzysztof Różalski (не возьмусь транслировать это на русский) нашёл её в рассылке по SWFMill.

Ниже приводится рабочий пример, который он использовал с swfmill 0.2.12:

My haXe labs. Открытие.

Когда начинаю знакомиться с новым языком или технологией, иногда записываю и сохраняю где-нибудь небольшие фрагменты, сниппеты изученного.
Раньше делал это локально, в текстовых файлах, в заметках Оперы, позже в локальной Wiki.
Этот раздел вики называл labs, то бишь лабораторией по изучению... :)

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

RSS-материал