MXML без Flex Framework / Компоненты - PullRequest
3 голосов
/ 12 января 2009

Компилятор Flex может компилировать SWF-файлы "чистого AS3", которые не содержат байт-код компонента Flex. Таким образом,

Можно ли создать пользовательский каркас компонентов (используемый вместо Flex Framework), который все еще можно визуально разложить с помощью MXML (читай: разметка) и скомпилировать в SWF без каких-либо зависимостей от Flex Сам фреймворк?

Ответы [ 2 ]

8 голосов
/ 12 января 2009

Да, это возможно. Ваши файлы MXML - это просто другой способ указания классов. Вы можете увидеть, к чему сводятся mxml-файлы, скомпилировав ваш проект и предоставив -compiler.keep-generated-actionscript=true to mxmlc.

bar.mxml:

<?xml version="1.0" encoding="utf-8"?>
<flash:Sprite xmlns:flash="flash.display.*">
</flash:Sprite>

После компиляции с mxmlc -compiler.keep-generated-actionscript=true bar.mxml получается следующее.

генерироваться / bar-generated.as:

package {
    import flash.display.Sprite;
    // bunch of imports
    public class bar extends Sprite {
        public function bar() { super(); }
    }
}
3 голосов
/ 12 января 2009

Существует два разных компилятора: один используется для компиляции кода ActionScript в байт-код AVM, а другой (mxmlc) компилирует файлы MXML в код ActionScript, который затем, в свою очередь, компилируется первым компилятором. Если вы хотите увидеть, какой код AS3 генерируется, передайте параметр -keep компилятору MXML.

Теоретически возможно сделать то, что вы предлагаете. Я предполагаю, что mxmlc активно использует функции из класса UIComponent, так что вам, вероятно, придется немного взломать mxmlc, чтобы он не задевал классы не-UIComponent. Тем не менее, поскольку такие вещи, как [Bindable] / привязка данных, используют функции платформы Flex (а не обычные функции Flash Player / AVM), вы переписали бы очень много кода.

...