【问题标题】:Is it possible to create dynamic embed function?是否可以创建动态嵌入功能?
【发布时间】:2011-11-29 18:55:53
【问题描述】:
是否可以在 ActionScript3 中创建动态嵌入函数
例如这样
public function embedImage(path:String):Bitmap{
[Embed(source = path, mimeType = "image/png")]
var NewBitmapClass:Class;
var image:Bitmap=new NewBitmapClass();
return image;
}// tried it, it doesnt work
或者可能以其他方式,或者即使有可能?
【问题讨论】:
标签:
actionscript-3
image
embed
【解决方案1】:
最接近“动态”部分的方法是创建一个包装类,在其中定义图像,稍后您可以通过 id 将它们作为位图获取。
不幸的是,这些属性是公开的,否则 hasOwnProperty 函数不会返回 true。 (如果有人找到更好的方法,请告诉我)
见下文:
package {
import flash.display.Bitmap;
public class DynamicEmbed {
[Embed(source = "../images/cat.jpg")]
public var cat : Class;
[Embed(source = "../images/parrot.jpg")]
public var parrot : Class;
[Embed(source = "../images/pig.jpg")]
public var pig : Class;
[Embed(source = "../images/quail.jpg")]
public var quail : Class;
public function DynamicEmbed() {
}
public function getBitmap(id : String) : Bitmap {
if(hasOwnProperty(id)) {
var bitmap : Bitmap = new this[id]();
return bitmap;
}
return null;
}
}
}
【解决方案2】:
嵌入的元素是在编译时嵌入的。您不能在编译时动态嵌入某些东西...如果您想动态加载资源,请使用Loader。
【解决方案3】:
不,嵌入源是在编译时嵌入的。您不能在运行时嵌入任何内容。这就是嵌入的意思,在构建 swf 期间嵌入。