Haxe, as3hx, NME, Apache FlexJS - преобразование проекта Flash Builder Flex в HTML5 + Js

Раньше использовали Flash Builder 4.6 для создания некоторых мобильных приложений. Созданные приложения работают нормально только на моделях телефонов высокого класса, но также работают медленнее, чем собственные приложения. Особенно, когда приложение «загружается», когда приложение полностью загружено, требуется некоторое время. Я знаю, почему это медленнее, потому что AIR - это дополнительный уровень приложения, который переводит его на собственный.

Позвольте мне рассказать вам о своей точке зрения. Я знаю, что разработка нативного программного обеспечения медленнее, чем нативного. В некоторых ситуациях вам нужен собственный (для скорости, графики и т. Д.), Но в большинстве случаев это не так важно (не нужно, чтобы все части программного обеспечения напрямую использовали оборудование). Я хочу добиться снижения затрат на разработку, разработав его один раз, и иметь возможность переносить его на многие платформы (при необходимости). Я понимаю, почему существует так много языков, на мой взгляд, это только потому, что им нравится язык, они хотят привнести что-то новое, потому что это ново, или привязать разработчиков к определенной платформе (коммерческая причина). На самом деле, существует не так много различий в типах оборудования или способах его работы, так зачем инвестировать в «новые» вещи, если они не приносят ничего нового. Я хочу разработать долговечный код, не привязанный к шумихе или трендам платформы. Например, когда вы вложили средства в написание кода для определенной платформы, скажем, Window Mobile, ваш код в наши дни бесполезен. Все может быстро измениться, особенно в мобильном мире.

Во всяком случае, в последнее время я обнаружил существование Haxe, но не знал, что он существует. Звучит очень многообещающе, если использовать один язык (AS-like) и перенести его на другой язык. Очень интересно то, что его можно перенести на Javascript и использовать, например, в сочетании с телефонным разговором для создания мобильных приложений или для возможности использовать его на веб-сайте без необходимости флэш-памяти или встраивать его в исполняемый файл с помощью виртуальной машины. - позвала Неко. Они утверждают, что создаваемый им код быстрее, чем исходный фреймворк Adobe. Я могу представить, что это быстрее, потому что все элементы Haxe работают быстро.

Затем я нашел NME (тоже не знал, что он существует), который, похоже, основан на Haxe и Neko, для создания мобильных приложений для разных платформ, включая Javascript и HTML5. Это натолкнуло меня на мысль переносить гибкие проекты в NME, чтобы избавиться от требований Adobe AIR и, возможно, ускорить выполнение и получить больше возможностей с тем же кодом.

Затем я нашел as3hx и некоторую информацию об Apache FlexJS (официально известном как Adobe FalconJS). as3hx переводит код ActionScript в код Haxe, а FlexJS преобразует AS + XML в неотредактируемый код HTML5 + Javascript. Я предпочитаю as3hx из-за расширенных возможностей, но не знаю, как реализовать проект после преобразования (получаются только некоторые файлы hx). Не пробовал FlexJS, потому что он кажется экспериментальным (не официальным) и требует обновления инфраструктуры Adobe Flex до более новой версии Apache Flex Framework 4.9. Я не решаюсь обновлять фреймворк в Flash Builder, потому что понимаю, что могу испортить исходную настройку.

Перед тем, как продолжить, у меня есть несколько вопросов:

  1. Действительно ли возможно преобразовать (сложный / огромный) гибкий проект в NME?
  2. Что мне нужно сделать после преобразования гибкого проекта с помощью as3hx, чтобы он работал как проект (чтобы иметь возможность скомпилировать его в NME).
  3. Кто-нибудь пробовал подход FlexJS, и оно того стоило?

Для вашего сведения, некоторые ресурсы, которые приводят к этим вопросам:

Большое спасибо за любой вклад, и если вам нужна дополнительная информация, напишите мне.


person Codebeat    schedule 31.03.2013    source источник
comment
Как бывший разработчик Flash я использовал NME с HaXe в течение прошлого года. Я считаю, что это здорово, и использовал его в мобильной игре. Не уверен, насколько легко было бы портировать существующий гибкий проект, который полагается на различные компоненты и т. Д.   -  person Allan    schedule 31.03.2013
comment
Привет, Аллен, спасибо за ответ. Немного поигрался с NME, но не похоже, что можно переносить flash-объекты на другой язык / цель, кроме flash. Скачал демо и попробуй скомпилировать, например, на Javascript. Получите сообщение об ошибке: вы не можете получить доступ к пакету flash с текущими флагами компиляции (для flash.display.Sprite). Если это невозможно сделать, в чем смысл этих целей или я что-то упускаю? Как это возможно, что они утверждают, что многоязычны, если вы не можете им пользоваться. Звучит немного бессмысленно или нет?   -  person Codebeat    schedule 31.03.2013
comment
Убедитесь, что вы используете nme.display.Sprite вместо flash.display.Sprite. Nme.display.Sprite (и все классы nme, имитирующие Flash API) имеют условия компилятора для компиляции на выбранную вами платформу.   -  person Allan    schedule 01.04.2013
comment
Аллен, спасибо, вот в чем дело!   -  person Codebeat    schedule 01.04.2013
comment
Здравствуйте, Эрвинус, на ваш вопрос прошло 7 месяцев, мне очень интересно узнать, какой выбор вы выбрали? вы ждали, что Adobe улучшит производительность AIR? или вы использовали haxe NME? Я уже запустил свое приложение для Android с использованием openFL, мне нравится, когда кто-то говорит мне, что я принял правильное решение, так как я предпочел openFL Adobe AIR ..   -  person simo    schedule 25.11.2013
comment
Симо ›Ну, положил в холодильник на долго. Невозможно прикрыть HaXe целый сгиб, это боль, настоящая боль. Поэтому решите оставить все как есть, как сказано в ответе на этой странице. Не смотрел на openFL, выглядит многообещающе, но нет времени взглянуть на него. Я немного оптимизирую свой код, добавляя изображения не как ресурсы, а как ресурсы в каталог. Это сокращает время загрузки, но приводит к некоторым задержкам между просмотрами. Огромным преимуществом Flash Builder является возможность подписания приложения для его доставки в магазин. Как он работает с openFL?   -  person Codebeat    schedule 26.11.2013


Ответы (4)


Действительно ли возможно преобразовать (сложный / огромный) гибкий проект в NME?

Haxe NME не является альтернативой проекту пользовательского интерфейса flex mxml, поэтому, если вы выберете гибкий пользовательский интерфейс, вы будете ограничены его ограничениями.

В NME было перенесено много сложных библиотек as3, так что это не невозможно, но flex mxml требует огромных вложений, и некоторые могут возразить, что Flex не стоит этих усилий (включая меня).

http://www.aswing.org/, изначально основанный на java swing ui, имеет версии as3 и Haxe NME .

https://github.com/RealyUniqueName/StablexUI/ и https://github.com/ianharrigan/haxeui также являются отличными вариантами для кроссплатформенного пользовательского интерфейса Haxe / OpenFL (NME).

Такие инструменты, как as3hx, упрощают процесс преобразования основных отличий в as3 / Haxe. Он не претендует на абсолютное преобразование, и я еще не видел ничего, что могло бы автоматически преобразовать очень сложный as3 в Haxe. Это всего лишь инструмент, и он не будет использовать оптимизацию кода as3 для более продвинутых и лучших языковых функций языка Haxe.

person imp    schedule 01.04.2013
comment
В качестве дополнительного лакомого кусочка для добавления; основная часть Flex Framework написана на AS3. Единственные части MXML - это некоторые из скинов Spark. Компилятор Flex примет MXML и превратит его в ActionScript. Все приложения Flex, которые я видел, широко используют MXML. Если NME может легко портировать ActionScript; тогда, возможно, удастся что-то улучшить с помощью сценария ActionScript, сгенерированного из компилятора Flex, и «преобразованной» версии Flex Framework. Я ничего не знаю о NME, чтобы судить о жизнеспособности этого; хотя. Потенциально это звучит как масштабное мероприятие. - person JeffryHouser; 01.04.2013
comment
Спасибо, думаю, я пропустил эту идею. - person Codebeat; 02.04.2013

Я очень рекомендую FlexJS, особенно всем, у кого есть интересный проект AS3 / Flex. В этом году с FlexJS был достигнут большой прогресс. Зачем все это переписывать, если можно использовать инструменты и язык AS3, который вы уже знаете? Я работал с FlexJS и недавно создал весь интерфейс веб-сайта, серверную часть и соединение с mysql, все написано на AS3 и скомпилировано в javascript для Node.js. Это действительно потрясающе.

Flash Builder с FlexJS https://cwiki.apache.org/confluence/display/FLEX/Using+FlexJS+with+Adobe+Flash+Builder

Руководства и инструменты Джош Тынджала создал здесь множество замечательных ресурсов. http://nextgenactionscript.com

Я надеюсь скоро добавить свои собственные уроки.

person Kenny Lerma    schedule 06.10.2016

Кажется, что ваш путь к строительному проекту слишком длинный, чтобы его можно было завершить быстро. В настоящее время основная цель Adobe для флэш-платформы - сделать ее сладкой конфетой для разработчиков игр, а это означает, что они определенно уделяют ОЧЕНЬ много внимания производительности эфира и флэш-плеера.

Может быть, быстрее дождаться их обновлений производительности, чем играть с haxe (что очень похоже на бета-версию) или javascript (что очень сомнительный язык).

person user1875642    schedule 31.03.2013
comment
Я считаю, что ты прав насчет траектории. Лучше переписать, если нужно. Javascript - очень сомнительный язык? Я думаю, вы ошибаетесь, может быть, у вас был плохой опыт с этим? Я очень хорошо разбираюсь в Javascript, это очень просто и мощно, если вы что-то знаете об указателях. - person Codebeat; 02.04.2013

Прошу прощения, что разбил ваши надежды, но я имею дело с той же проблемой, что и отказ от Flex и переход к HTML5 / JS. Вы можете ударить головой, пытаясь преобразовать ваше большое гибкое приложение в HTML5 / JS в течение нескольких месяцев, если хотите, но, в конце концов, будет проще просто переписать все в библиотеке, такой как ExtJS.

person jugg1es    schedule 01.04.2013
comment
Думаю, вы правы, переписывание - лучший и самый быстрый способ. Я сделаю это со своей собственной библиотекой, jquery и телефонным разговором. Также нашел это: StablexUI (stablex.ru), выглядит многообещающим, но я не знаю, можно ли на него положиться. А вот этот: ivank.net, основан на холсте и выглядит невероятно хорошо. Печально только то, что он не работает на моем Galaxy S. Проблема с решением HTML / JS и телефонным разговором заключается в том, что большую часть времени звук не работает на Android 2.3. Это проблема не телефонного разговора, а Android. Хорошая особенность NME в том, что вы также можете создать его флэш-демо. - person Codebeat; 02.04.2013
comment
Помимо использования NME для создания HTML / JS, код огромен (около 500 КБ для очень простого приложения, которое воспроизводит звук). Также код, созданный NME / HaXe, содержит ошибки (подозрительный код). Я не знаю, попробую ли я. - person Codebeat; 02.04.2013
comment
да, вы получите намного лучшую производительность, если перепишете с нуля - person jugg1es; 02.04.2013
comment
Код @Erwinus, созданный NME / HaXe, содержит ошибки (подозрительный код), этот расширяющий оператор является излишним, если вы не можете продемонстрировать эти ошибки. Цель NME html5 - это почти весь api среды выполнения флэш-памяти внутри файла js, так что да, это будет 500 КБ или около того. Вы также можете использовать флаг компилятора -minify и убедиться, что включен параметр --dead-code-elimination. На самом деле Haxe - великолепный ООП-язык Type Safe для написания js, см. Самый минимальный пример на try.haxe.org. Вы не ограничены NME с Haxe / JS. - person imp; 02.04.2013
comment
Я могу продемонстрировать это, и компилятор оболочки Google обнаружит это, например: if (...) {} else null; Я посмотрю еще раз и попробую предложенный вами вариант. - person Codebeat; 03.04.2013
comment
Как продвигается переписывание с jquery? Удалось ли реализовать все функции с таким же качеством и интерактивностью, что и в версии Flex? - person Manius; 09.02.2015
comment
@Crusader не уверен, кого вы имеете в виду, но я нахожусь на завершающей стадии тестирования приложения, которое я перенес на javascript (в основном ExtJS) из Flex с оболочкой Objective C (для вызовов веб-сервисов). Я добился большого успеха с этой новой версией, отличной от Flex, и она переносима на все платформы. Я также начал использовать Xamarin, где вы можете использовать C # для создания собственных приложений на всех платформах. Пока это кажется очень хорошим. - person jugg1es; 09.02.2015
comment
Упс, прокомментировал не в том месте. Но я предполагаю, что тот же вопрос все еще актуален ... вы бы сказали, что смогли продублировать все функции, которые было в приложении Flex? Успех - это одно, но разве лучше, хуже, быстрее, медленнее, более / менее продуктивно развивать или поддерживать и так далее? - person Manius; 13.02.2015
comment
Используя Javascript, я разработал логический движок для приложения, которое теперь можно переносить куда угодно. Единая кодовая база для всего. HTML5 / CSS3 / JS может делать все, что умеет Flex, плюс намного больше (и намного проще), и есть НАМНОГО больше поддержки сообщества с помощью тысяч библиотек, таких как angularjs или kineticjs. Даже CSS3 может использовать функцию «calc» и имеет встроенные анимационные переходы, обычно с одной строкой CSS. Flex на данный момент (февраль 2015 г.) такой бычий ** по сравнению - person jugg1es; 13.02.2015