flash actionscript-3 actionscript command-line mxmlc

flash - compilando actionscript desde la línea de comando usando MXMLC



actionscript-3 command-line (5)

Como dice Hippo, el compilador automáticamente compilará en el SWF todas las clases utilizadas a través de su código, es recursivo por defecto.

Puedes leer también todas las opciones que tiene el compilador MXMLC .

Tengo un pequeño "proyecto" de script que consta de dos archivos, llámalos foo.as y bar.as. Por razones en las que no voy a entrar, realmente quiero construir el .SWF desde la línea de comandos, sin configurar un proyecto formal de ningún tipo. Cada compilador que he usado te permite hacer esto, pero por mi vida no puedo descubrir cómo obligar a MXMLC a compilar estos dos archivos y vincularlos a un SWF.

Ingenuamente lo intento

MXMLC foo.as bar.as

pero estoy informado que solo se permite un archivo fuente.

Ok, suponiendo que compilé estos dos archivos por separado, ¿cómo los vincularía para obtener el SWF final?

NOTA: La única razón por la que tengo dos archivos en lugar de uno es el requisito de solo una clase por archivo. Intenté poner ambas clases en un archivo y hacer que una de las clases fuera private o internal pero ninguna de estas ideas funcionó. Me encantaría saber que puedo poner más de una clase en un archivo (solo una es pública).


Esta es una pregunta de dos partes, así que responderé ambas por separado.

Compilando dos archivos de clase en un SWF

MXMLC compilará automáticamente todas las clases que encuentre desde el punto de entrada que le proporcione (su clase principal). Encuentra clases de sus declaraciones de importación y definiciones de ruta de clase completa.

Aquí hay una guía realmente buena para usar la línea de comandos MXMLC para compilar sus proyectos AS3. El artículo está un poco anticuado, pero la información sigue siendo buena. Entra en detalles sobre las cosas que debe saber al usar el compilador de línea de comandos, incluidas las opciones de MXMLC, la escritura de scripts BAT y un poco sobre AS3 que probablemente pueda omitir si sabe lo que está haciendo.

Tener más de una clase en un archivo

AS3 le permite tener una clase por archivo, más las clases de "ayudante" que desee. No admite clases protegidas y privadas como Java. Las clases de ayuda solo son visibles en el archivo que están definidos.

Las clases de ayuda se encuentran fuera de la declaración del paquete (lo cual es un poco extraño para mí). Aquí hay un ejemplo:

package com.mynamespace { public class Foo { private var _fooHelper:FooHelper = new FooHelper(); } } // helper class imports also go outside the package. import com.example.xml.SaxHandler; class FooHelper { private var bar:Number = Math.random(); }


Si el archivo / clase principal necesita / usa la clase del otro archivo, el otro archivo también se compilará en el archivo swf.


Si está interesado en automatizar ese proceso, también puede usar Project Sprouts, que incluye un poco más de lo que está solicitando, pero le brinda la posibilidad de iniciar compilaciones y pruebas desde el terminal.


Si está utilizando grunt como administrador de tareas (para js), puede usar este complemento:

https://github.com/JamesMGreene/grunt-mxmlc

Establece las opciones de configuración y luego lo ejecuta desde la línea de comando:

grunt.initConfig({ mxmlc: { options: { // Task-specific options go here. }, your_target: { // Target-specific file lists and/or options go here. }, }, })