Динамическая загрузка и компиляция MXML / AS во время выполнения - PullRequest
1 голос
/ 14 января 2010

Привет!

Я пытаюсь создать приложение, которое имеет гибкий интерфейс и PHP-сервер. Я изо всех сил пытаюсь сделать что-то с этим приложением, что я не мог найти способ сделать. Я бы хотел, чтобы мое приложение Flex отображало представление, основанное на MXML, которое оно получает с сервера в ответ на какое-то взаимодействие в приложении Flex. например, предположим, что в текущем представлении есть две кнопки, и если я нажму первую кнопку, она загрузит один mxml / as3 с сервера, а когда я нажму другую, он загрузит другой mxml. Как вы думаете, я могу справиться с этой ситуацией? Пожалуйста, пролите немного света, если вы знаете, как это сделать, поскольку я бился головой о стену, пытаясь найти способ.

С наилучшими пожеланиями,

Рошан Амадору

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Как сказал Роберт, Flash VM изначально не интерпретирует код as3 или mxml, поэтому вы можете пойти двумя путями:

  • Если вам нужно динамически генерировать код, вы можете попробовать использовать библиотеку Eval (http://eval.hurlant.com/),, которая может соответствовать вашим потребностям.

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

2 голосов
/ 03 февраля 2010

на самом деле вы можете скомпилировать ваш mxml во время выполнения, но я не знаю о производительности. Если ваша серверная часть - java, granite (как в graniteDS) имеет сервлет веб-компилятора для компиляции вашего mxml в режиме реального времени. Я использовал его при разработке, избегайте его компиляции (обычный Eclipse EE, не flexbuilder) и, кажется, работает просто отлично, за исключением двух небольших проблем, которые я не потратил время на выяснение:

1) если для отображения сервлета используется "/ mxml / *", вам необходимо получить доступ к своему mxml как

http://localhost://WebApp/mmxml/myUncompiled.mxml

Видите лишнюю букву «м» на пути? не знаю почему ...

2) не может скомпилировать код с помощью dropShadow или других фильтров, возможно, нужно что-то изменить в файле flex-config.xml сервлета, который похож на конфигурацию xml для mxmlc

Кроме этого, мне кажется, это может быть довольно взрывоопасная смесь, .jsp и .mxml

2 голосов
/ 14 января 2010

Я думаю, что то, что вы хотите сделать, достигается с помощью модулей во Flex. Вы не можете отправить MXML или .as в приложение flex, поскольку в нем нет компилятора, который мог бы преобразовать их в двоичный исполняемый код. Таким образом, способ сделать это - подготовить отдельные части приложения, которые не загружаются вместе с основным приложением, но могут быть загружены в него позже, называемые модулями.

Сообщение в блоге о гибких модулях: sujitreddyg.wordpress.com

Если вы не хотите компилировать модули перед их развертыванием на сервере, а предпочитаете размещать там mxml-код (в стиле PHP), вам нужно установить Flex Module для Apache (модуль имени здесь это то же самое, что flex modules по совпадению, это не связано).

...