Активы классовые звонки не работают
Я создаю класс, который включает все необходимые мне ресурсы, иконки, шрифты, изображения и т. Д.; Я взял это из ответа Адриана здесь.
Это в значительной степени структура, которую он имеет:
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 ответ
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;
}
}
просто передайте имя актива, которое вам нужно, в виде строки, и, если он существует, вы получите растровое изображение, готовое к отображению.