Pregunta

El compilador Flex puede compilar " AS3 puro " Archivos SWF que no contienen ningún bytecode de Componente Flex. Entonces,

¿Sería posible crear un marco de componentes personalizado (usado en lugar del Marco de Flex), que todavía se puede diseñar visualmente usando MXML (leer: marcado), y compilarlo en un SWF sin ninguna dependencia del Flex Marco en sí?

¿Fue útil?

Solución

Sí, es posible. Sus archivos MXML son esencialmente una forma diferente de especificar clases. Puede ver a qué se reducen los archivos mxml compilando su proyecto y proporcionando -compiler.keep-generate-actionscript = true a mxmlc .

bar.mxml:

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

Después de compilar con mxmlc -compiler.keep-generate-actionscript = true bar.mxml , se convierte en lo siguiente.

generado / bar-generated.as:

package {
    import flash.display.Sprite;
    // bunch of imports
    public class bar extends Sprite {
        public function bar() { super(); }
    }
}

Otros consejos

Hay dos compiladores diferentes: uno que se usa para compilar código ActionScript en el código de bytes AVM y otro (mxmlc) que compila archivos MXML en código ActionScript que luego es compilado por el primer compilador. Si desea ver qué código AS3 se genera, pase el " -keep " parámetro para el compilador MXML.

En teoría, es posible hacer lo que sugieres. Mi conjetura es que mxmlc se basa en gran medida en las características de la clase UIComponent, por lo que probablemente tenga que hackear mxmlc un poco para que no vomite en clases que no sean UIComponent. Aún así, dado que cosas como [Bindable] / enlace de datos hacen uso de las funciones del marco de Flex (no las características simples de Flash Player / AVM), estaría reescribiendo una gran cantidad de código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top