用字符串启动Embed变量...变量不存在?

问题描述

| 在我的动作脚本文件中,我有以下内容:
[Embed(source=\"assets/disk.png\")]
protected static const Disk:Class;
如果我尝试使用以下方法创建一个类:
var ClassReference:Class = getDefinitionByName(\"Disk\") as Class;
我收到一个错误消息“磁盘”不存在。有没有一种方法可以通过名称初始化Disk类,以便它通过使用字符串创建该类的新实例? 那有意义吗?     

解决方法

        关闭,但是您只需要稍微调整一下,就像这样:
var str:String = \"MyObject\";

var Shell:Class = getDefinitionByName(str) as Class;
var myobj:DisplayObject = new Shell();

addChild(myobj);
需要注意的是,这一行:
var myobj:DisplayObject = new Shell();
您应该用最原始的类型替换
DisplayObject
(我通常使用自己的基类)。 其他注意事项: 使用
getDefinitionByName
时,您需要完整的软件包路径。例如:
getDefinitionByName(\"flash.display.MovieClip\");
如果遇到这样的错误:
ReferenceError: Error #1065: Variable MyObject is not defined.
您可能需要引用可以创建的类,如下所示:
var ref1:Disk;
var ref2:Other;
var ref3:MyObject;
    ,        只需花9英镑-这是一门课程,可以实例化:
var diskInstance:ByteArray = new Disk();
(它将是ByteArrayAsset,因为未在Embed中指定mime类型。) Embed会生成名称长而晦涩的类,如果不解析swf就无法获取它,因此请使用Disk const。 更新: 据我了解,您想嵌入资源并为其指定特定的类名。 AFAIK,这是不可能的。您虽然可以自己创建Disk类,然后将Embed放入其中:
public class Disk {
    [Embed(source=\"assets/disk.png\")]
    public static const content:Class;
}
然后,您可以按名称获取Disk类,并使用content属性创建实例。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...