Rivolgendosi punti di ryanday, non riesco a spiegare le ulteriori 3 byte, ma alcune note ...
Il libro di modelli di ActionScript design scoraggia anche questo a causa di bagaglio in eccesso
Sì, a pagina 115, ma penso che sia sbagliato e inviato errata in tal senso.
La specifica ActionScript 3 dice che tutti i nomi pubblici del pacchetto verranno importati se si utilizza il '*'. Quindi c'è un successo,
In un certo senso, ma non sono d'accordo sull'interpretazione e colpisco. Dice: "I nomi dei membri del pacchetto sono resi visibili ..." (in full).In questo contesto, si riferisce al fatto di rendere i nomi dei membri visibili allo agli strumenti del compilatore e dell'editor, non visibili all'interno del file SWF compilato. Ad esempio, non significa che le classi vengono compilate nel file SWF, a meno che non vengano effettivamente utilizzate (una variabile dichiarata di quel tipo).
Un altro modo di osservare questo, è possibile importare manualmente flash.display.MovieClip
. Ma se non crei alcuna istanza di MovieClip, la classe MovieClip non verrà compilata nel file SWF finale.
Per soddisfare me stesso, ho compilato il seguente helloworld in 3 modi, l'output link-rapporto come suggerito da @secoif ...
package
{
import flash.display.Sprite;
import flash.text.TextField;
public class ASHelloWorld extends Sprite
{
public function ASHelloWorld()
{
var tf:TextField = new TextField();
tf.text = "Hello World!";
addChild(tf);
}
}
}
In primo luogo, come scritto, rapporto link:
<report>
<scripts>
<script name="~/Documents/eclipse3.5carbonFbPlugin-FX4-LS10/ASHelloWorld/src/ASHelloWorld.as" mod="1278415735000" size="682" optimizedsize="344">
<def id="ASHelloWorld" />
<pre id="flash.display:Sprite" />
<dep id="AS3" />
<dep id="flash.text:TextField" />
</script>
</scripts>
<external-defs>
<ext id="AS3" />
<ext id="flash.text:TextField" />
<ext id="flash.display:Sprite" />
</external-defs>
</report>
In secondo luogo, eliminare il file di report di collegamento e cambiare le importazioni:
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
Clean costruire, e il link rELAZIONE t sembra esattamente lo stesso Stessa dimensione, stessa ottimizzazione, stesse classi collegate.
In terzo luogo, eliminare il file di report di collegamento e cambiare le importazioni a:
import flash.display.*;
import flash.text.*;
Clean costruzione, e la relazione di collegamento sembra esattamente lo stesso. Stessa dimensione, stessa ottimizzazione, stesse classi collegate.
Solo le classi Sprite e TextField fanno in ogni caso il file SWF.
Osservando le dimensioni effettive del file SWF su disco, sembra esserci una leggera variazione (1 o 2 byte) rispetto alle 3 versioni. Niente di peggio che per il più grande SWF cui si fa riferimento nel post di ryanday.
Solo una nota: anche se si utilizza il percorso completo del codice, è necessario importarlo altrimenti il compilatore si lamenterà. –
Vero, l'ho dimenticato. Ma era più inteso come un motivo per cui abbiamo le dichiarazioni di importazione, dal momento che l'alternativa sarebbe molto fastidiosa. –
Nessun problema. E sì, quello era il comportamento in AS 2. Se hai usato il nome completo, potresti omettere l'importazione. –