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 и даже передавать ссылки на них в конструкторы других классов.