as3中动态加载图形的问题

pio*_*rek 6 actionscript-3

我做了一些游戏,我使用了很多图形.我创建了具有所有图形的类,例如菜单:

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; 

}
Run Code Online (Sandbox Code Playgroud)

从这里加载图形我使用函数:

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

}
Run Code Online (Sandbox Code Playgroud)

但这只有在我添加手动创建一些图形时才起作用: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;
    }

}
Run Code Online (Sandbox Code Playgroud)

我在寻找避免制作的方法private var someBitmap:Bitmap = new BitmapName;.你知道我怎么处理这个?

Dan*_*elB 3

MenuGFX如果您的项目源代码中没有引用/使用该类本身,则该类不会被编译到您的 SWF 中。new MenuGFX在您的应用程序中调用某个地方(可能在您的主类中)应该足够了。编译器必须知道此类将在应用程序中的某个位置使用,否则它将被忽略。