2009-05-20 29 views
17

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

Ingenuamente, trato

MXMLC foo.as bar.as

pero estoy informado de que sólo se permite un archivo de origen.

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

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

Respuesta

23

Esta es una pregunta de dos partes, por lo que responderé por separado.

Compilación de dos archivos de clase en un SWF

mxmlc se automagiclly recopilar todas las clases que encuentra desde el punto de entrada se le da (clase principal). Encuentra clases de sus declaraciones de importación y definiciones de ruta de clase completa.

Aquí hay una muy buena guide for using MXMLC command line para compilar sus proyectos de AS3. El artículo está un poco anticuado, pero la información sigue siendo buena. Él entra en detalles sobre las cosas que necesita saber cuando usa el compilador de línea de comandos, incluidas las opciones de MXMLC, escribiendo 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, además de la mayor cantidad de clases "ayudantes" que lo desee. No es compatible con clases privadas y protegidas como Java. Las clases de ayuda solo son visibles en el archivo que están definidas.

Las clases de ayuda se sientan fuera de la declaración del paquete (lo cual es un poco extraño para mí). He aquí 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(); 
} 
2

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

2

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

Puede leer también todos los options the MXMLC compiler has.

0

Si usted está interesado en la automatización de este proceso, también se puede utilizar Project Sprouts que incluye un poco más de lo que está pidiendo - pero que le dan la capacidad para poner en marcha construye y se ejecuta la prueba desde la terminal.

0

Si está utilizando grunt como un administrador de tareas (por JS), puede utilizar este plugin:

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

se ajustan las opciones de configuración a continuación, ejecutarlo desde la línea de comandos:

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