资产类调用不起作用

时间:2016-03-28 02:41:27

标签: actionscript-3 flashdevelop

我正在制作一个嵌入我需要的所有资源的课程,图标,字体,图像等;我从Adrian的回答here.

中得到了它

这几乎就是它的结构:

public class Assets 
{
    [Embed(source = "../assets/images/imageBG.png")]
    private static var imageBG:Class;

    [Bindable]
    private var imageName:Class;//There wasn't a ";" here, no error but I added it just in case

    public static function setImage(newImageName:Class):void
    {
        imageName = newImageName:Class;
    }
}

而且我应该在同一个包中使用不同类的这样的东西来调用我需要的资产(虽然它应该适用于任何其他类)

    image = new Assets.setImage(imageBG) as Bitmap;

实际上,它表示“标签必须是一个简单的标识符。”

如果我改变

imageName = newImageName:Class;

imageName = newImageName; //The "Class" part was pointed as the error

它表示“访问未定义的属性imageName。”

在函数上调用时,从任何名称调用

“方法不能用作构造函数。”

在“资产”之后指出。一部分。

我显然做错了什么但我不知道它是什么,如果有人可以帮忙请。

另外,如果我问我怎样才能更改东西以便我可以将资产作为字符串传递给它?或者我应该提出另一个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

imageName不是静态的,因此在静态范围内不存在。

尽管有错误,但您接受的答案仍被接受。此外,它仅适用于Flex项目。这是相同但更正的:

public class Assets 
{
    static private var assetref:Object = {};

    [Embed(source = "../assets/images/imageBG.png")]
    private static var imageBG:Class; 

    assetref["imageBG"] = imageBG;   

    public static function getImage(newImageName:String):Bitmap
    {
        if(assetref[newImageName])
        {
            return new assetref[newImageName]();
        }
        return null;
    }
}

只需将您需要的资产名称作为字符串传递,如果存在,您将返回准备显示的位图。