Обращаясь к пунктам Райандея, я не могу объяснить дополнительные 3 байта, но несколько примечаний ...
Книга шаблонов проектирования ActionScript также не одобряет это из-за сверхнормативного багажа
Да, на стр. 115, но я думаю, что это неправильно и отправил сообщения об этом.
Спецификация ActionScript 3 гласит, что все публичные имена из пакета будут импортированы, если вы используете '*'. Так что есть хит,
Это вроде как, но я не согласен с интерпретацией и ударил. В нем говорится: «Имена членов пакета сделаны видимыми ...» ( полностью ). В этом контексте речь идет о том, чтобы сделать имена элементов видимыми для инструментов компилятора и редактора, не видимыми в скомпилированном SWF. то есть не означает, что классы компилируются в SWF - если только они не используются (переменная, объявленная этого типа).
Еще один способ посмотреть на это, вы можете вручную импортировать flash.display.MovieClip
. Но если вы не создадите экземпляр MovieClip, класс MovieClip не будет скомпилирован в окончательный SWF-файл.
Чтобы удовлетворить себя, я скомпилировал следующий helloworld тремя способами, выдав ссылку-отчет в соответствии с предложением @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 );
}
}
}
Сначала, как написано, ссылка на отчет:
<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>
Во-вторых, удалите файл отчета о связях и измените импорт на:
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
Чистая сборка, и отчет о ссылках выглядит точно так же. Одинаковый размер, такая же оптимизация, те же связанные классы.
В-третьих, удалите файл отчета о ссылках и измените импорт на:
import flash.display.*;
import flash.text.*;
Чистая сборка, и отчет о ссылках выглядит точно так же. Одинаковый размер, такая же оптимизация, те же связанные классы.
В класс SWF попадают только классы Sprite и TextField.
Если посмотреть на фактический размер SWF-файла на диске, то, кажется, есть небольшое (1 или 2 байта) изменение в 3 версиях. Не хуже, чем для более крупного SWF, о котором говорится в сообщении Райандея.