2011-07-02 2 views
6

Ai đó có thể giải thích sự khác biệt giữa getDefinitionByName và getDefinition inA AS3 là gì?Sự khác biệt giữa getDefinition và getDefinitionByName trong AS3

Khi tôi tải SWF bên ngoài, tôi không thể sử dụng getDefinitionByName vì tôi gặp Lỗi # 1065.

Nhưng sử dụng externalSWF_ContentLoaderInfo.applicationDomain.getDefinition hoạt động OK.

Vì vậy, tại sao getDefinitionByName không tìm thấy className? Ý tôi là, nếu định nghĩa nằm bên trong applicationDomain của SWF đã tải, tại sao cũng không có trong SWF chính? (Tôi đang sử dụng Flex).

Offtopic: Tôi không thể tạo thẻ mới vì vậy tôi không thể thêm các thẻ getDefinition và getDefinitionByName :(

Trả lời

6

getDefinition là một phương pháp của một ApplicationDomain mà trả về một định nghĩa của một lớp học, không gian tên hoặc chức năng .

getDefinitionByName là một chức năng gói cấp từ flash.utils mà trả về một đối tượng class mà bạn có thể sử dụng để nhanh chóng đối tượng mới. định nghĩa đã phải được nạp ở đâu đó trong ApplicationDomain của bạn.

Lý do bạn không thể đặt getDefinitionByName bằng SWF bên ngoài là nó được tải vào một ApplicationDomain riêng biệt. Ví dụ thứ hai của bạn hoạt động vì bạn đang nhắm mục tiêu đúng ApplicationDomain. Để làm ví dụ đầu tiên bạn làm việc bạn phải nạp SWF bên ngoài vào ApplicationDomain hiện tại của bạn như thế này:

var request:URLRequest = new URLRequest("externalSWF.swf"); 
var context:LoaderContext = new LoaderContext(); 
context.applicationDomain = ApplicationDomain.currentDomain; 
var loader:Loader = new Loader(); 
loader.load(request,context); 

này hoạt động bởi vì nó vượt qua ApplicationDomain hiện như một tài sản của bối cảnh nạp.

+0

OK, vì vậy getDefinitionByName() là một số loại phím tắt cho ApplicationDomain.currentDomain.getDefinition() trong ứng dụng chính? – Enrique

+0

Trong bất kỳ ApplicationDomain nào bạn đang ở vào thời điểm đó, có. – shanethehat

+0

Điều gì quyết định miền ứng dụng nào bạn đang ở? Đó có phải là Miền ứng dụng (AD) của lớp có chứa phương thức thực hiện cuộc gọi đến getDefinition (tức là một phương thức ở đầu ngăn xếp cuộc gọi) không? – Triynko