2009-05-20 9 views
17

Ho un piccolo "progetto" di ActionScript costituito da due file, chiamiamoli foo.as e bar.as. Per ragioni a cui non voglio partecipare, voglio davvero creare il file .SWF dalla riga di comando, senza creare un progetto formale di alcun tipo. Ogni compilatore che abbia mai usato ti permette di farlo, ma per la vita di me non riesco a capire come forzare MXMLC nella compilazione di questi due file e nel collegarli in un file SWF.compilazione di actionscript da riga di comando utilizzando MXMLC

Ingenuamente, provo

MXMLC foo.as bar.as

ma sto informato che un solo file sorgente è permesso.

Ok, supponendo che abbia compilato questi due file separatamente, come collegarli insieme per ottenere il file SWF finale?

NOTA: l'unico motivo per cui sono presenti due file anziché uno è il requisito di una sola classe per file. Ho provato a mettere entrambe le classi in un unico file e a creare una delle classi private o internal ma nessuna di queste idee funzionava. Sarei estasiato nello scoprire che posso mettere più di una classe in un file (con solo una pubblica).

risposta

23

Questa è una domanda in due parti, quindi risponderò separatamente.

Compilazione due file di classe in un unico file SWF

mxmlc sarà automagiclly compilare tutte le classi che trova dal punto di ingresso si dà (la classe principale). Trova le classi dalle istruzioni di importazione e le definizioni di percorso completo della classe.

Ecco un ottimo guide for using MXMLC command line per compilare i progetti AS3. L'articolo è un po 'datato, ma l'informazione è comunque buona. Entra nei dettagli sulle cose che devi sapere quando usi il compilatore della riga di comando, incluse le opzioni MXMLC, scrivendo script BAT e un po 'su AS3 che probabilmente puoi saltare se sai cosa stai facendo.

Avere più di una classe in un file

AS3 vi permette di avere una classe per file, oltre a tanto classi "helper" come ti piace. Non supporta classi protette e private come Java. Le classi helper sono visibili solo nel file che sono definite.

Le classi di supporto si trovano all'esterno della dichiarazione del pacco (il che è un po 'strano per me). Ecco un esempio:

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

Se il file/classe principale richiede/utilizza la classe dell'altro file, l'altro file verrà anche compilato in swf.

2

Come dice Hippo, il compilatore compilerà automaticamente nel SWF tutte le classi utilizzate tramite il codice, è ricorsivo per impostazione predefinita.

È possibile leggere anche tutti gli options the MXMLC compiler has.

0

Se siete interessati ad automatizzare questo processo, è anche possibile utilizzare Project Sprouts che comprende un po 'più di quello che stai chiedendo - ma che vi darà la possibilità di dare il via costruisce e prove eseguite dal terminale.

0

Se stai usando grunt come un task manager (per js), è possibile utilizzare questo plugin:

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

di impostare le opzioni di configurazione quindi eseguire dalla riga di comando:

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