Adresowanie punktów ryanday jest, nie mogę wyjaśnić dodatkowe 3 bajty, ale kilka uwag ...
Wzory książka ActionScript Projekt zniechęca również to ze względu na nadbagaż
Tak, na stronie 115, ale myślę, że jest źle i złożyłem erratę w tym celu.
Specyfikacja ActionScript 3 mówi, że wszystkie publiczne nazwy z paczki zostaną zaimportowane, jeśli użyjesz "*". Więc jest trafienie, ale nie zgadzam się z interpretacją i trafieniem. Jest napisane: "Nazwy elementów paczki są oznaczone jako widoczne ..." (in full).W tym kontekście chodzi o to, aby nazwy członków nie były widoczne dla narzędzi kompilatora i edytora, niewidocznych w skompilowanym pliku SWF. tj. oznacza, że klasy są kompilowane w SWF - chyba że są faktycznie używane (deklarowana zmienna tego typu).
Inny sposób patrzenia na to, można ręcznie zaimportować flash.display.MovieClip
. Ale jeśli nie stworzysz żadnej instancji MovieClip, klasa MovieClip nie zostanie skompilowana do ostatecznego pliku SWF.
Aby zadowolić siebie, Skompilowałem następujące helloworld na 3 sposoby, wyprowadzanie link-raport jak sugeruje @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);
}
}
}
Po pierwsze, jak napisano raport 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>
Po drugie, należy usunąć plik raportu łącza i zmienić importu do:
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
czystą kompilację, a link repor t wygląda dokładnie tak samo. Ten sam rozmiar, ta sama optymalizacja, te same połączone klasy.
trzecie, usunąć plik raportu łącza i zmienić importu do:
import flash.display.*;
import flash.text.*;
czystą kompilację, a raport Link wygląda dokładnie tak samo. Ten sam rozmiar, ta sama optymalizacja, te same połączone klasy.
Tylko klasy Sprite i TextField przechodzą do pliku SWF w każdym przypadku.
Patrząc na rzeczywisty rozmiar pliku SWF na dysku, wydaje się, że występuje niewielka (1 lub 2-bajtowa) wersja w 3 wersjach. Nie gorsze niż dla większego SWF, o którym mowa w poście ryanday.
Uwaga: nawet jeśli używasz w ścieżce pełnej ścieżki, potrzebujesz importu, inaczej kompilator będzie narzekał. –
Prawda, zapomniałem o tym. Ale bardziej chodziło o to, dlaczego mamy oświadczenia dotyczące importu, ponieważ alternatywa byłaby bardzo denerwująca. –
Bez problemów. I tak, to było zachowanie w AS 2. Jeśli użyłeś w pełni kwalifikowanej nazwy, możesz pominąć import. –