2016-03-28 5 views
1

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

И я должен использовать что-то вроде этого из другого класса в том же пакете, чтобы вызвать I актива нужно (хотя он должен работать в любом другом классе)

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

Как это, она trows «Этикетка должна быть простым идентификатором.»

, если я изменю

imageName = newImageName:Class; 

в

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

это trows этот "Доступ неопределенной ImageName собственности."

, когда вызывается функция, и это оттуда, где он называется

«Метод не может быть использован в качестве конструктора.»

указал сразу после «Активы». часть.

Я, очевидно, что-то делаю неправильно, но я не знаю, что это такое, если кто-нибудь может помочь.

Кроме того, все в порядке, если я спрошу, как я могу изменить вещи, чтобы я мог передать передаваемый им объект как строку? или я должен задать другой вопрос?

Заранее спасибо.

+0

imageName не является статическим и поэтому не существует в статической области. – BotMaster

ответ

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; 
    } 
} 

просто передать имя актива вам нужно как строка, если она существует, вы получите обратно растровые готовую для отображения.

+0

Спасибо, я не заметил, что это эксклюзивный Flex, и я впервые использовал тег [embed], поэтому я не знал, что у меня получается, это решило проблему. – Inferry

+0

Кстати, следует ли использовать один класс для встраивания всего или использовать разные классы? – Inferry

+0

Один класс в порядке, но если у вас есть сотни активов, вы можете разбить его на несколько классов. До вас действительно. – BotMaster