我做了一些游戏,我使用了很多图形.我创建了具有所有图形的类,例如菜单:
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;.你知道我怎么处理这个?
MenuGFX如果您的项目源代码中没有引用/使用该类本身,则该类不会被编译到您的 SWF 中。new MenuGFX在您的应用程序中调用某个地方(可能在您的主类中)应该足够了。编译器必须知道此类将在应用程序中的某个位置使用,否则它将被忽略。