如何解决用字符串启动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属性创建实例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。