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





Существует два разных компилятора: один используется для компиляции кода ActionScript в байт-код AVM, а другой (mxmlc) компилирует файлы MXML в код ActionScript, который затем, в свою очередь, компилируется первым компилятором. Если вы хотите увидеть, какой код AS3 сгенерирован, передайте компилятору MXML параметр «-keep».
Теоретически можно делать то, что вы предлагаете. Я предполагаю, что mxmlc сильно влияет на функции класса UIComponent, поэтому вам, вероятно, придется немного взломать mxmlc, чтобы он не блевал на классах, не относящихся к UIComponent. Тем не менее, поскольку такие вещи, как [Bindable] / привязка данных, используют функции фреймворка Flex (а не простые функции Flash Player / AVM), вам придется переписывать очень много кода.
Да, это возможно. По сути, ваши файлы MXML - это просто другой способ указания классов. Вы можете увидеть, к чему сводятся файлы mxml, скомпилировав свой проект и предоставив -compiler.keep-generated-actionscript=true в 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(); }
}
}
Аргумент компилятора можно сократить до -keep. Намного легче запомнить.
Что для этого мотивация? Вы хотите написать свой собственный фреймворк как OpenLaszlo?