Вопрос

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

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

Это было полезно?

Решение

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

бар.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(); }
    }
}

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top