1

我正在使用以下函数将库中的一些图像添加到舞台。

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++;
}

我想做的是将图像名称作为字符串参数传递给函数,但似乎无法弄清楚如何做到这一点。

有人可以帮我吗?

4

1 回答 1

0

您想要做的是通过使用 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++;
}

更改是导入:

import 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.

处理这种情况的方法是在编译器的类变量声明中声明一个变量,以便它识别该符号。

因此,如果您的两个图像类名称是 image_1 和 image_2,那么在您的类声明中,您将执行以下操作:

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

如果您有大量图像,那可能会很痛苦,但这是我发现让编译器识别它们的唯一方法。:/ 哈哈

于 2012-12-05T01:48:36.800 回答