簡體   English   中英

AS3 字符串到 class

[英]AS3 string to class

如何在沒有 getDefinitionByName 的情況下將字符串轉換為 class 因為 class 未鏈接到庫項目並且 getDefinitionByName 僅適用於鏈接到庫或已初始化的類? 有辦法嗎? 或者我必須初始化我想使用的每個 class?! 這對 Adobe 來說太愚蠢了!

getDefinitionByName()將與任何 class 名稱一起使用,無論是否鏈接到庫。 您的問題很可能是因為您沒有在代碼中提及 class 名稱,所以它根本不在您的 swf 中。 您必須確保 class 在您的代碼中至少有一處使用,否則將不會被編譯。

這可以像將它們放在主類中的一行一樣簡單:

public class Main {

    public function Main(){
        ClassYouWant;
        AnotherClass;

        codeThatDoesStuff();
    }

}

簡短的回答:

如果您想避免包含 class 引用(如@grapefrukt 建議的那樣),您必須在庫中編譯這些類,並將主應用程序中的這些類作為 RSL(運行時共享庫)引用

長答案:

除了使用 getDefinitionByName() 之外,沒有其他方法可以通過其名稱創建 Class。

但是,有幾種方法可以編譯您的代碼。 默認情況下,如果您有一個不包含庫的應用程序,它將不會編譯代碼中未引用的類。 你稱這很愚蠢,但這樣做有一個很好的理由:它減少了 swf 的大小,從而減少了應用程序的下載時間。

如果您使用庫,則可以通過三種方式從主應用程序中引用它們:

  • 合並到代碼中
  • 運行時共享庫 (RSL)
  • 外部的

第一個選項將獲取主應用程序中引用的庫中的所有(且僅)類。 這導致較小的 swf 大小。

第二個選項會將整個庫編譯成一個單獨的 swf,由主應用程序加載。 這會導致更大的文件大小,但相同的 swf 可以被多個應用程序使用。 對您來說最重要的是:所有類都在該 swf 中,因此它們可以被 getDefinitionByName() 引用,而不必在您的主應用程序中包含 class。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM