尝试从库外部动态加载图像,因为我希望在网站启动时加载这些图像。基本上我有几个按钮,每个按钮返回一个事件,抛出一个特定的图像名称来抓取。这是函数;
function sendDisplayData(e:MouseEvent){
display_mc.displayName.text = e.currentTarget.parent.menuItemName.text; //name of image eg. "myImageName" in the library;
//create the image object
var imgObj:Object = e.currentTarget.parent.menuItemName.text;
addChild(imgObj);
}
所以基本上在调用函数时,我想将名称实例化为库中实际动画片段的名称。以下功能有效但仅适用于一张图像。
function sendDisplayData(e:MouseEvent){
display_mc.displayName.text = e.currentTarget.parent.menuItemName.text;
//create the image object
var image:Salads = new Salads(); //the class of the image is "Salads"
display_mc.addChild(Salads);
}
那么如何通过使用String然后从库中获取与该字符串相关的图像来使该函数动态化。
答案 0 :(得分:2)
另一种选择是使用getDefinitionByName:
function getDisplayObject(linkage:String):DisplayObject {
var clazz:Class = getDefinitionByName(linkage) as Class;
return new clazz();
}
因此,如果您已经拥有正确的链接名称,则可以执行以下操作:
function sendDisplayData(e:MouseEvent){
//create the image object
var imgObj:DisplayObject = getDisplayObject(e.currentTarget.parent.menuItemName.text);
addChild(imgObj);
}
答案 1 :(得分:1)
有许多选项,其中一个更简单,但不是很灵活。
public class Inventory { public static function getMovieClipByName(value:String):MovieClip { switch(value ) { case "Salads": return new Salads(); break; //etc.... default: return null; } } }
您还可以将所有图像对象放入数组中,确保为每个图像对象分配一个名称,然后使用Array some()方法查找与该名称对应的对象并将其返回。
然后你可以这样做:
function sendDisplayData(e:MouseEvent){ var _name:String = display_mc.displayName.text = e.currentTarget.parent.menuItemName.text; //create the image object var image:MovieCLip = Inventory.getMovieClipByName(_name); display_mc.addChild(image); }