Пятнашки Haxe + HaxePunk + NME

Опубликовал – 28.02.2013

Доброй ночи товарищи, захотелось пощупать Haxe с его кроссплатформенностью. В целом мне понравилась простота изучения Haxe. Надо полагать аналогичный синтаксис используется в ActionSript (могу ошибаться, поправьте если что).

Решил на конкретной задаче изучить это дело. Взял для начала простенькую игру пятнашки, я их не так давно писал на яве, чтоб обрести вдохновения на создание чего-то большего.

Установка самого Haxe заняла не больше 20 минут, при том что я никогда этим не занимался. NME мне в этом очень помог. Выбор IDE пал на первую из выдачи гугла – FlashDevelop. Не скажу что самая удачная IDE, которую я использовал, а после использования IntelliJ IDEA она просто меркнет своими далеко не богатыми возможностями. Из недостатков могу отметить парочку, которые меня больше всего стопали в разработке:

1. Рукописные импорты, т.е. банально подключить свой же класс, который лежит в соседнем пакедже мне нужно ручками набирать его import ru.znay.znay… как мне кажется, современная IDE себе такого позволить не может.

2. Автоформатирование срабатывает только по нажатию ентер и переходу на другую строчку, либо если поставишь заключительные «;» – очень напрягает чисто визуально, когда форматируешь строку в середине не соблюдая пробелы(возможно дурная привычка) ожидая что IDE поправит само, ан нет. необходимо перейти в конец строки и тыкнуть ентер. Глуповато.

Так же пробовал плагин Haxe support для моей любимой IntelliJ IDEA. Но он оказался вообще сыроват в плане сборок под разные платформы (их там просто нет, я так и не понял как из идеи собрать проект), хоть у него и нет проблем с авто импортами и авто форматированием.

Что же касается фремворка HaxePunk он оказался очень дружелюбным, и даже очень документированным, с ним у меня проблем вообще не было. Очень порадовали tweens, это вероятно флешевские фишки. Но пользовать анимацию или какие либо движения с их помощью одно удовольствие. Как пример в игре я использовал два вида tween:

1. Из фремворка HaxePunk:

var screenFader = new VarTween();
screenFader.tween(picture, "alpha", to, duration);
world.addTween(screenFader);

Что же тут произошло, давайте разберемся. Перво наперво мы создаем объект типа tween их в пакете com.haxepunk.tweens.misc несколько, приводить список не буду, иначе статья растянется. Дальше указываем твину объект с которым мы работаем, вторым атрибутом указываем имя свойства, третьим до какого значения доводить это свойство и четвертым время выполнения твина. Можно еще указать callback, который сработает по завершению работы. И так называемые EaseFunction, это обычная интерполяция, можно выбрать линейную, квадратичную, косинусойдную и тд. Смотря какой плавности вы хотите добиться.

2. Я так же попробовал твин из фремворка Actuate, выглядит примерно так же:

Actuate.tween (this, duration, { x: targetX, y: targetY } )
   .ease (Quad.easeOut)
   .onComplete (this_onMoveToComplete);

Т.е. все просто, указываем объект, время выполнения, свойства указываем сразу с финальными значениями, дальше можно указать EaseFunction, либо сразу повесить callback на разные евенты. Вообще удобно, твин от Actuate использует паттерн декоратор, работать с ним одно удовольствие.

Вероятно я не использовал всех возможностей фремворка и что-то изобрел сам, но работать было приятно. А еще больше мне понравился результат, теперь, с помощью NME я могу собрать проект под разные платформы. Вот к примеру собрал на флеше:

Исходники проекта выкладываю для ознакомления, может кому то понадобятся, вот ссылка. Но повторюсь, так как это был мой первый опыт работы с Haxe и HaxePunk возможно там есть несколько велосипедов, которые уже изобретены.

Рассказать друзьям:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • Яндекс.Закладки
  • В Живую Ленту Google
  • Сто закладок
Комментарии (4) - Пятнашки Haxe + HaxePunk + NME

Ответ

  1. Александр:

    Посмотри горячие клавиши на FlashDevelop, как можно такое писать об IDE не прочитав даже основ работы с ней.
    Про импорт классов например – пишешь имя класса в теле программы и он сам тебе подсказывает и прописывает импорты, на крайняк пишешь имя класса полностью правильно и нажимешь Ctrl+Shift+1.
    Прям беда какая то с быстрыми выводами и оценками, у всех программистов которые выходят из С++ С и прочих Джав.

    Thumb up Thumb down 0

    • Извините, никак не хотел никого задеть. Это лишь был обзор человека, который первый раз работал с чужим инструментом, вероятно инструмент просто был несколько не отзывчивый, либо человек кривоват ) Не обижайтесь

  2. Александр:

    Чуваки, может хватит хвалить свое болото? Мало вам проблем в «родных» языках? Если делать выводы о языках и технологиях за пределами своей песочницы, так хоть потрудитесь изучит вопрос с разных сторон.
    Это я возмущен комментариями и выводами в этом вашем посте – http://www.gamedev.ru/flame/forum/?id=173514

    Thumb up Thumb down -1

  3. sm100:

    Спсибо за статью и исходники. Как раз сейчас взвешиваю за и против haxe
    надеюсь исходники помогут понять.

    Мне как раз нужно делать нечто похожее на то, что приведено в пятнашках.

    Thumb up Thumb down +1

Ответить

Comments

Перед отправкой формы: