尋址ryanday的點,我無法解釋額外的3個字節,但也有少數筆記...
ActionScript的設計模式一書也鼓勵這種因行李超重
是的,第115頁,但我認爲這是錯誤的,並提交了勘誤表。
如果您使用'*',則ActionScript 3規範將聲明包中的所有公共名稱。所以有一個命中,
這種有,但我不同意重新解釋和命中。它說:「包裝成員的名稱是可見 ...」(in full)。在這種情況下,它指的是編譯器和編輯器工具使成員可見的名稱在編譯的SWF中不可見。即而不是是指將類編譯到SWF中 - 除非實際使用它們(聲明該類型的變量)。
查看此問題的另一種方法是,您可以手動導入flash.display.MovieClip
。但是,如果您未創建任何MovieClip實例,則MovieClip類將不會被編譯到最終的SWF中。
爲了滿足我自己,我整理了以下的HelloWorld有3種方式,輸出鏈路報告@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;
乾淨的構建,並鏈接不到原始t看起來完全一樣。相同的大小,相同的優化,相同的鏈接類。
三,刪除鏈接的報告文件並更改進口:
import flash.display.*;
import flash.text.*;
乾淨的構建,並鏈接報告長得一模一樣。相同的大小,相同的優化,相同的鏈接類。
只有Sprite和TextField類在每種情況下都使它成爲SWF。
看看磁盤上的實際SWF文件大小,在3個版本中似乎有一個輕微(1或2字節)的變化。沒有比在ryanday的崗位中提到的更大的SWF更糟。
只需注意:即使您在代碼中使用完全限定的路徑,也需要導入,否則編譯器會發出抱怨。 – 2009-08-12 00:48:20
的確,我忘記了。但它更多意味着爲什麼我們有進口聲明,因爲替代方案會非常煩人。 – 2009-08-12 10:43:46
沒問題。是的,這是AS 2中的行爲。如果使用完全限定名稱,則可以省略導入。 – 2009-08-13 01:24:58