Actionscript 3 as3-将库映像名称传递给函数,然后将其添加到stage

Actionscript 3 as3-将库映像名称传递给函数,然后将其添加到stage,actionscript-3,bitmap,Actionscript 3,Bitmap,我使用以下函数将一些图像从库添加到舞台 function AddImage(image_name:String):void { if(image_count == 4) return; // change the following line so it uses "image_name" var defaultImage:added_1 = new added_1(100, 100); var tmpImage:Bitmap = new Bitmap(defau

我使用以下函数将一些图像从库添加到舞台

function AddImage(image_name:String):void {
    if(image_count == 4) return;
    // change the following line so it uses "image_name"
    var defaultImage:added_1 = new added_1(100, 100);
    var tmpImage:Bitmap = new Bitmap(defaultImage);
    tmpImage.x = 124.5 + (108.5 * image_count);
    tmpImage.y = 1511.9;
    addChild(tmpImage);
    image_count++;
}
我希望能够将图像名称作为字符串参数传递给函数,但似乎不知道如何实现


有人能帮我吗?

您要做的是通过使用getDefinitionByName获取类定义,以便创建实例,下面的代码是如何做到这一点的:

// you'll need to add this import to use getDefinitionByName
import flash.utils.getDefinitionByName;

function AddImage(image_name:String):void {
    if(image_count == 4) return;
    // this next line gets the class definition of the image_name
    var imageClass:Class = getDefinitionByName(image_name) as Class;
    // this is how you create an instance of that class
    var defaultImage:BitmapData = new imageClass(100, 100);
    var tmpImage:Bitmap = new Bitmap(defaultImage);
    tmpImage.x = 124.5 + (108.5 * image_count);
    tmpImage.y = 1511.9;
    addChild(tmpImage);
    image_count++;
}
更改包括导入:

导入flash.utils.getDefinitionByName

这两条线:

 var imageClass:Class = getDefinitionByName(image_name) as Class;
 var defaultImage:BitmapData = new imageClass(100, 100);
注-- 还想提到的是,在某些情况下,如果使用Flex而不是Flash IDE进行编译,可能会遇到问题,出现以下错误:

ReferenceError: Error #1065: Variable <YourImageClassName> is not defined.
如果您有大量图像,这可能会很痛苦,但这是我找到的让编译器识别它们的唯一方法。:/哈哈

private var forCompiler1:image_1;
private var forCompiler2:image_2;