0

我正在尝试在我的 RangedItem 类的构造函数中嵌入图像

public class RangedItem extends Item{

    public var speed:Number;
    public function RangedItem(s:Number, n:String, d:Number, path:String):void{
        super(n, d);
        speed = s;
        [Embed(source=path, mimeType="image/png")] const IMAGE:Class;
    }
}

这是我用来构建项目的代码

items.push(new RangedItem(item.speed, item.name, item.damage, '/img/gun.png'));

但我得到这些错误

col: 4: Error: unable to resolve 'path' for transcoding
col: 4: Error: Unable to transcode path.

img/gun.png 肯定存在,因为如果我用“img/gun.png”替换路径,一切正常。

顺便说一句,如果它改变了任何东西,我正在使用 flashpunk 框架。
我究竟做错了什么?提前致谢!

4

1 回答 1

1

[Embed]元数据在编译时使用,而不是在运行时使用。因此,您在这里尝试使用的变量插值path将不起作用:

[Embed(source=path, mimeType="image/png")] const IMAGE:Class;

编译器需要一个带有图像路径的文字字符串:

[Embed(source="path/to/my/image.png", mimeType="image/png")] const IMAGE:Class;

您可能会考虑创建一个包含所有嵌入图像的 Singleton(或您最喜欢的模式)类。然后你的类可以引用单例类中的资产,甚至可以在其他类的构造函数中传递对它们的引用。

于 2013-08-12T19:33:21.997 回答