我刚刚看了这个关于 Starling 框架的精彩教程:
http ://www.hsharma.com/tutorials/starting-with-starling-ep-3-sprite-sheets/
听起来 spritesheet 正是您要寻找的:您将所有单独的纹理捆绑到一个称为 spritesheet 的大纹理中,并创建一个 xml 文件,其中包含纹理在 spritesheet 中的位置信息。为此,您可以使用此工具:
http: //www.codeandweb.com/texturepacker
我不确定您是否可以将它用于商业项目,并且您所说的纹理数量听起来不像您只是出于爱好,因此您可能需要检查许可证。还有一个专业版可用。
Texturepacker 创建两个文件:spritesheet.png 和 spritesheet.xml。您只需将它们复制到您的项目中。然后将此代码添加到您的一个类中。
private static var gameTextureAtlas:TextureAtlas;
[Embed(source="../media/graphics/mySpriteSheet.png")]
public static const AtlasTextureGame:Class;
[Embed(source="../media/graphics/mySpritesheet.xml", mimeType="application/octet-stream")]
public static const AtlasXmlGame:Class;
public static function getAtlas():TextureAtlas
{
if(gameTextureAtlas==null)
{
var texture:Texture=getTexture("AtlasTextureGame");
var xml:XML=XML(new AtlasXmlGame());
gameTextureAtlas=new TextureAtlas(texture,xml);
}
return gameTextureAtlas;
}
现在您可以通过调用访问 spritesheet 的所有纹理
YourClass.getAtlas().getTexture("name");
这简直太棒了。当您使用 texturepacker 时,捆绑到 spritesheet 中的每个精灵的文件名将成为其纹理名。
这可能为时已晚,无法帮助您,但我希望未来的访问者可以从这个优雅的解决方案中受益。
我想强调一下,这个答案基本上是 sharma 教程的摘录。我什至可以随意复制他在截屏视频中使用的代码。所有的功劳都归于他