Actionscript 3 AS3字符串到类

Actionscript 3 AS3字符串到类,actionscript-3,class,Actionscript 3,Class,如何将字符串转换为没有getDefinitionByName的类,因为该类未链接到库项,而getDefinitionByName仅适用于链接到库或allready初始化的类!有办法吗?或者我必须初始化我想使用的每个类?!那太愚蠢了 getDefinitionByName()将使用任何类名,无论是否链接到库。您的问题可能是,由于您在代码中没有提到类名,所以它根本不在您的swf中。您必须确保该类在代码中至少有一个位置被使用,否则它将不会被编译 这可以很简单,只需将它们放在主类中的一行: public

如何将字符串转换为没有getDefinitionByName的类,因为该类未链接到库项,而getDefinitionByName仅适用于链接到库或allready初始化的类!有办法吗?或者我必须初始化我想使用的每个类?!那太愚蠢了

getDefinitionByName()
将使用任何类名,无论是否链接到库。您的问题可能是,由于您在代码中没有提到类名,所以它根本不在您的swf中。您必须确保该类在代码中至少有一个位置被使用,否则它将不会被编译

这可以很简单,只需将它们放在主类中的一行:

public class Main {

    public function Main(){
        ClassYouWant;
        AnotherClass;

        codeThatDoesStuff();
    }

}

简短的回答:

如果您想避免包含类引用(如@grapefrakt所建议的),您必须在库中编译这些类,并将主应用程序中的类作为RSL(运行时共享库)引用

长答案:

除了使用getDefinitionByName()之外,没有其他方法可以通过名称创建类

但是,有几种编译代码的方法。默认情况下,如果您有一个不包含库的应用程序,它将不会编译代码中未引用的类。你认为这很愚蠢,但有一个很好的理由:它减少了swf的大小,从而缩短了应用程序的下载时间

如果使用库,有三种方法可以从主应用程序引用它们:

  • 合并成代码
  • 运行时共享库(RSL)
  • 外部的
第一个选项将从库中获取主应用程序中引用的所有(且仅限于)类。这将导致较小的swf尺寸

第二个选项将把整个库编译成一个单独的swf,由主应用程序加载。这将导致更大的文件大小,但相同的swf可用于多个应用程序。对您来说最重要的是:所有类都在该swf中,因此getDefinitionByName()可以引用它们,而不必在主应用程序中包含该类


+1,这很有趣,我也不知道还有别的名字!我不知道你说的“已经初始化”的类是什么意思,不想初始化你想使用的每个类。如果不初始化它们,您将如何使用它们?无需担心,我想要的无法实现!在任何语言中,除了有eval的人。我的想法是,我将创建许多类,而不必在任何地方启动它们!我不明白当你说“不必在任何地方启动它们”时你在问什么。你能举个例子吗?我有一个游戏。我希望每个级别都是一个扩展了LevelTpl类的类,就像“class Level1扩展了LevelTpl”。然后我想调用任何级别,比如“level”+curLevel。问题是AS3中没有eval,所以我必须使用getDefinitionByName,但是getDefinitionByName只适用于allready初始化的类!所以如果我让100个级别=>100个类,我必须在使用它们之前启动它们!我希望我不必那么做!如果你这样命名的话,你需要花大约两分钟的时间来写一个简短的循环来追踪你的级别名称。将跟踪输出复制到游戏中使用的类中,就完成了。Eval在这里帮不了你,因为问题不是我找不到类,而是它们没有被引用,因此根本不包括在内。@Alex你也可以在flash CS5中链接到RSL(通过“高级ActionScript属性”),但我认为,要编译库,您需要FlashBuilder,或者使用mxmlc编译器在命令行进行编译。mxmlc也可以编译ActionScript-only库;它不仅限于Flex。所以,你想做的事情是可以做到的,但对你来说可能并不容易。@Alex看看我刚刚发现的: