Dirigiéndose puntos de ryanday, no puedo explicar los 3 bytes adicionales, pero algunas notas ...
El libro Patrones de Diseño de ActionScript también desalienta esto debido a un exceso de equipaje
Sí, en la página 115, pero creo que es incorrecto y envié una errata a ese efecto.
La especificación de ActionScript 3 indica que todos los nombres públicos del paquete se importarán si usa el '*'. Así que hay un hit,
Es algo así como, pero estoy en desacuerdo con la interpretación y éxito. Dice: "Los nombres de los miembros del paquete están hechos visible ..." (in full).En este contexto, se refiere a hacer que los nombres de los miembros sean visibles para las herramientas de compilación y editor, no visibles dentro del archivo SWF compilado. es decir, no significa que las clases se compilan en el archivo SWF, a menos que realmente se utilicen (una variable declarada de ese tipo).
Otra forma de ver esto, puede importar manualmente flash.display.MovieClip
. Pero si no crea ninguna instancia de MovieClip, la clase MovieClip no se compilará en el SWF final.
Para satisfacer a mí mismo, he recopilado la siguiente holamundo en 3 maneras, la salida de enlace-informe según lo sugerido por @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);
}
}
}
En primer lugar, como está escrito, informe de enlace:
<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>
en segundo lugar, eliminar el archivo de informe de enlace y cambiar a las importaciones:
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
generación limpia, y el enlace repor t se ve exactamente igual. Mismo tamaño, mismo tamaño optimizado, mismas clases enlazadas.
En tercer lugar, eliminar el archivo de informe de enlace y cambiar a las importaciones:
import flash.display.*;
import flash.text.*;
generación limpia, y el informe de enlace se ve exactamente lo mismo. Mismo tamaño, mismo tamaño optimizado, mismas clases enlazadas.
Solo las clases Sprite y TextField llegan al SWF en cada caso.
Al observar el tamaño real del archivo SWF en el disco, parece haber una ligera variación (1 o 2 bytes) en las 3 versiones. No es peor que para el SWF más grande al que se hace referencia en la publicación de ryanday.
Solo una nota: incluso si utiliza la ruta completa en su código, necesita la importación o de lo contrario el compilador se quejará. –
Cierto, lo olvidé. Pero fue más un punto sobre por qué tenemos las declaraciones de importación, ya que la alternativa sería muy molesta. –
Sin problemas. Y sí, ese era el comportamiento en AS 2. Si usaba el nombre completo, podría omitir la importación. –