Проблема с динамической загрузкой графики в as3 - PullRequest
6 голосов
/ 01 июня 2011

Я делаю какую-то игру, я использую много графики. Я делаю класс, который имеет всю графику, например, для меню:

public class MenuGFX 
{
    [Embed(source = '../../assets/graphics/menu/background.png')]
    public static const backgroundGFX:Class; 
    [Embed(source='../../assets/graphics/menu/startD.png')] 
    public static const startDGFX:Class; 
    [Embed(source='../../assets/graphics/menu/startO.png')]
    public static const startOGFX:Class; 
    [Embed(source='../../assets/graphics/menu/startU.png')]
    public static const startUGFX:Class; 

}

Для загрузки графики из этого я использую функцию:

public class GraphicsLoader
{
    private static var graphicsDictionary:Dictionary = new Dictionary();

    public static function getGraphic(name:String):Bitmap
    {

        var bitmap:Bitmap = graphicsDictionary[name];
        if (bitmap == null)
        {

            var cls:Object = getDefinitionByName("Graphics::" + name) ;
            bitmap = new (cls);
            graphicsDictionary[name] = bitmap;          
        }
        return bitmap;
    }

}

Но это работает только тогда, когда я добавляю вручную создание графики: private var backgroundBitmap:Bitmap = new MenuGFX.backgroundGFX; в класс загрузчика:

public class GraphicsLoader
{
    private static var graphicsDictionary:Dictionary = new Dictionary();

    private var backgroundBitmap:Bitmap = new MenuGFX.backgroundGFX;

    public static function getGraphic(name:String):Bitmap
    {

        var bitmap:Bitmap = graphicsDictionary[name];
        if (bitmap == null)
        {

            var cls:Object = getDefinitionByName("Graphics::" + name) ;
            bitmap = new (cls);
            graphicsDictionary[name] = bitmap;          
        }
        return bitmap;
    }

}

Я ищу способ избежать создания private var someBitmap:Bitmap = new BitmapName;. Вы знаете, как с этим справиться?

1 Ответ

3 голосов
/ 01 июня 2011

Класс MenuGFX не будет скомпилирован в ваш SWF-файл, если сам класс не находится там, где есть ссылки / используются в исходном коде вашего проекта. Этого должно быть достаточно для вызова new MenuGFX где-нибудь в вашем приложении (может быть, в вашем основном классе). Компилятор должен знать, что этот класс будет использоваться где-то в вашем приложении или он будет игнорироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...