Phát biểu điểm ryanday, tôi không thể giải thích thêm 3 byte, nhưng một vài lưu ý ...
Các Patterns ActionScript Thiết kế cuốn sách cũng không khuyến khích này do hành lý quá cước
Vâng, trên trang 115, nhưng tôi nghĩ rằng đó là sai và gửi errata đến hiệu ứng đó.
Thông số ActionScript 3 cho biết tất cả tên công khai từ gói sẽ được nhập nếu bạn sử dụng '*'. Vì vậy, có một lần truy cập,
Loại đó, nhưng tôi không đồng ý việc diễn giải và nhấn. Nó nói: "Tên của các thành viên gói được thực hiện có thể nhìn thấy ..." (in full).Trong bối cảnh này, nó đang đề cập đến việc làm cho tên của các thành viên có thể nhìn thấy đến các công cụ biên dịch và biên tập, không hiển thị trong SWF được biên dịch. tức là không phải có nghĩa là các lớp được biên dịch vào SWF - trừ khi chúng thực sự được sử dụng (một biến được khai báo loại đó).
Một cách khác để xem xét điều này, bạn có thể nhập thủ công flash.display.MovieClip
. Nhưng nếu bạn không tạo bất kỳ thể hiện nào của MovieClip, lớp MovieClip sẽ không được biên dịch thành SWF cuối cùng.
Để thỏa mãn bản thân mình, tôi biên soạn helloworld sau trong 3 cách khác nhau, xuất ra liên kết báo cáo theo đề nghị của @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);
}
}
}
Thứ nhất, như văn bản, liên kết báo cáo:
<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>
Thứ hai, xóa tệp báo cáo liên kết và thay đổi nhập thành:
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
Xây dựng sạch và liên kết repor t trông giống hệt nhau. Cùng kích thước, cùng tối ưu hóa, cùng một lớp được liên kết.
Thứ ba, xóa các tập tin báo cáo liên kết và thay đổi nhập khẩu để:
import flash.display.*;
import flash.text.*;
sạch xây dựng, và các báo cáo liên kết trông giống hệt nhau. Cùng kích thước, cùng tối ưu hóa, cùng một lớp được liên kết.
Chỉ các lớp Sprite và TextField mới đưa nó vào SWF trong mỗi trường hợp.
Nhìn vào kích thước tệp SWF thực trên đĩa, có vẻ như có sự khác biệt nhỏ (1 hoặc 2 byte) so với 3 phiên bản. Không tồi tệ hơn cho SWF lớn hơn được đề cập trong bài đăng của ryanday.
Chỉ cần lưu ý: ngay cả khi bạn sử dụng đường dẫn đủ điều kiện trong mã của mình, bạn cần nhập hoặc trình biên dịch khác sẽ khiếu nại. –
Đúng, tôi quên điều đó. Nhưng nó có ý nghĩa hơn là một lý do tại sao chúng ta có các báo cáo nhập khẩu, vì sự thay thế sẽ rất khó chịu. –
Không có vấn đề gì. Và có, đó là hành vi trong AS 2. Nếu bạn đã sử dụng tên đầy đủ, bạn có thể bỏ qua việc nhập. –