[Flash/Flex] Starling之资源管理类
2014-05-19 14:06
232 查看
转自:http://bbs.9ria.com/thread-175613-1-1.html
概述
每个游戏或应用都必须有若干的资源——无论是纹理,声音,位图文字,或其它各种对象。这些资源可以是嵌入的(可以理解为所有资源都在一个文件的浏览器游戏)或随游戏进行的(适用于手机游戏保存RAM需要嵌入对象)。
在如何引入资源以不同的方式访问它们有许多选择。AssetManager帮助你做到这些。它是允许你以各种方式添加资源,并且很轻易地调用它们的类。
目前,AssetManager支持下列类型的资源:
·纹理
·纹理图集
·声音
·位图文字
加载资源
比方说你要从硬盘加载一些资源,并从嵌入类加载其它资源。这里是如何通过AssetManager来加载它们。
首先,创建一个具有嵌入声明的类。
public class EmbeddedAssets
{
// 纹理
[Embed(source="/textures/bird.png")]
public static const bird:Class;
// 声音
[Embed(source="/audio/explosion.mp3")]
public static const explosion:Class;
}
复制代码
对于嵌入资源,遵循这些命名规范:
·嵌入图片的类名必须与文件名完全相同,不含扩展名。这是必须的以便从(图集,位图文字的)XMLs引用不会中断。
·图集和文字XML文件可以使用任意名字,因为它们永远不会通过文件名来引用。
然后让AssetManager实例化资源:
var assets:AssetManager = new AssetManager();
assets.verbose = true;
// 对 "bird"纹理和"explosion"声音进行排队
assets.enqueue(EmbeddedAssets);
// 对来自特定地址的文件进行排队
assets.enqueue("http://gamua.com/img/home/starling-flying.jpg");
// 对来自硬盘的文件进行排队(仅AIR)
var appDir:File = File.applicationDirectory;
assets.enqueue(appDir.resolvePath("music.mp3"));
// 对一个目录所有的内容进行递归排队(仅AIR)
assets.enqueue(appDir.resolvePath("textures"));
// ->现在加载所有的队列中的资源。当“ratio”等于1时,完成加载.
assets.loadQueue(function(ratio:Number):void
{
trace("Loading assets, progress:", ratio);
if (ratio == 1.0)
startGame();
});
复制代码
你可以用相同的方式来添加纹理图集和位图文字:只要把XML文件和它们引用的纹理加到队列中,它们将会被加载。位图文字将被马上在TextField类中注册。你不能通过AssetManager来访问它们。
调用资源
要调用资源,只要使用类的不同方法。每次资源通过资源不带扩展名的名称或嵌入对象的类名来引用。
// 这将首先搜索命名的纹理,然后再搜索图集
var texture:Texture = assets.getTexture("bird");
// 这将查看所有命名的纹理和图集
var textures:Vector.<Texture> = assets.getTextures("animation");
// 播放声音以及接收控制它的SoundChannel
var explosion:SoundChannel = assets.playSound("explosion");
复制代码
注意
这个类已经用在Starling下载包中的“Demo”和“Scaffold”项目中。查看这些项目来看看在真实项目中是如何使用的。
译后言:好久没在天地会翻译了,不过学习在依旧,有些是译在自己的博客了,有时间才会翻译了,现在工作都很忙
原文链接:http://wiki.starling-framework.org/manual/asset_management
翻译词数:480
概述
每个游戏或应用都必须有若干的资源——无论是纹理,声音,位图文字,或其它各种对象。这些资源可以是嵌入的(可以理解为所有资源都在一个文件的浏览器游戏)或随游戏进行的(适用于手机游戏保存RAM需要嵌入对象)。
在如何引入资源以不同的方式访问它们有许多选择。AssetManager帮助你做到这些。它是允许你以各种方式添加资源,并且很轻易地调用它们的类。
目前,AssetManager支持下列类型的资源:
·纹理
·纹理图集
·声音
·位图文字
加载资源
比方说你要从硬盘加载一些资源,并从嵌入类加载其它资源。这里是如何通过AssetManager来加载它们。
首先,创建一个具有嵌入声明的类。
public class EmbeddedAssets
{
// 纹理
[Embed(source="/textures/bird.png")]
public static const bird:Class;
// 声音
[Embed(source="/audio/explosion.mp3")]
public static const explosion:Class;
}
复制代码
对于嵌入资源,遵循这些命名规范:
·嵌入图片的类名必须与文件名完全相同,不含扩展名。这是必须的以便从(图集,位图文字的)XMLs引用不会中断。
·图集和文字XML文件可以使用任意名字,因为它们永远不会通过文件名来引用。
然后让AssetManager实例化资源:
var assets:AssetManager = new AssetManager();
assets.verbose = true;
// 对 "bird"纹理和"explosion"声音进行排队
assets.enqueue(EmbeddedAssets);
// 对来自特定地址的文件进行排队
assets.enqueue("http://gamua.com/img/home/starling-flying.jpg");
// 对来自硬盘的文件进行排队(仅AIR)
var appDir:File = File.applicationDirectory;
assets.enqueue(appDir.resolvePath("music.mp3"));
// 对一个目录所有的内容进行递归排队(仅AIR)
assets.enqueue(appDir.resolvePath("textures"));
// ->现在加载所有的队列中的资源。当“ratio”等于1时,完成加载.
assets.loadQueue(function(ratio:Number):void
{
trace("Loading assets, progress:", ratio);
if (ratio == 1.0)
startGame();
});
复制代码
你可以用相同的方式来添加纹理图集和位图文字:只要把XML文件和它们引用的纹理加到队列中,它们将会被加载。位图文字将被马上在TextField类中注册。你不能通过AssetManager来访问它们。
调用资源
要调用资源,只要使用类的不同方法。每次资源通过资源不带扩展名的名称或嵌入对象的类名来引用。
// 这将首先搜索命名的纹理,然后再搜索图集
var texture:Texture = assets.getTexture("bird");
// 这将查看所有命名的纹理和图集
var textures:Vector.<Texture> = assets.getTextures("animation");
// 播放声音以及接收控制它的SoundChannel
var explosion:SoundChannel = assets.playSound("explosion");
复制代码
注意
这个类已经用在Starling下载包中的“Demo”和“Scaffold”项目中。查看这些项目来看看在真实项目中是如何使用的。
译后言:好久没在天地会翻译了,不过学习在依旧,有些是译在自己的博客了,有时间才会翻译了,现在工作都很忙
原文链接:http://wiki.starling-framework.org/manual/asset_management
翻译词数:480
相关文章推荐
- Flex动态获取flash资源库文件
- 常用flash、flex资源集合
- 一篇比较全面的Flash&Flex相关技术资源大全
- Flash&Flex相关技术资源大全
- Flash、Flex资源收集之十全大补
- Flash、Flex资源收集之十全大补(转)
- [转]Flash、Flex、AS3.0框架及类库资源收集之十全大补
- Starling之资源管理类
- Flash、Flex资源收集
- Flash、Flex资源收集之十全大补
- Flash、Flex资源收集之十全大补
- Flash、Flex资源收集之十全大补
- Flash、Flex资源收集之十全大补
- Flash、Flex资源收集之十全大补
- 一篇比较全面的Flash&Flex相关技术资源大全(转)
- [Flash&Flex] AS3.0 如何利用[Embed(source="...")]嵌入资源
- Flash Flex资源收集
- 使用FLEX 和 Actionscript开发FLASH 游戏—嵌入资源和增加游戏元素
- Starling之资源管理类
- 在Flex中使用Flash的资源