Flash встраивание изображения из строкового параметра

Я пытаюсь вставить изображение в конструктор моего класса 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 существует наверняка, потому что, если я заменю path на "img/gun.png", все будет работать нормально.

Кстати, я использую флеш-фреймворк, если это что-то меняет.
Что я делаю неправильно? Заранее спасибо!

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 (или ваш любимый шаблон), который содержит все ваши встроенные изображения. Тогда ваши классы могут ссылаться на ресурсы в классе singleton и даже передавать ссылки на них в конструкторы других классов.

Другие вопросы по тегам