Starling 游戏 太空大战2 素材的准备
由于这个游戏使用Flex4.6来搭建的,所以游戏需要的素材都是通过[Embed] 内嵌编译来调去的。由此我们要创建一个单独的素材类来管理所有的素材。
1:Assets.as

package core { public class Assets { public static function init():void { } } }
2:将所需的素材引入项目中如图

接下来我们简单实现一下在flex4.6中使用一个外部元素实例化过程
package core { import starling.textures.Texture; public class Assets { //--- 绑定和设置外部素材的 ------ [Embed(source="assets/sky.png")] private static var sky:Class; public static var skyTexture:Texture; public static function init():void { skyTexture = Texture.fromBitmap(new sky()); } } }
3:使用Starling框架的一个新的特性,也是一个重要的原因就是用纹理集 texture Atlas
通过使用纹理集,你可以避免纹理上的更新纹理贴图和资源超出的限制。所有的纹理贴图全部都放到一个“超级纹理”中,并且Starling中的你可以很容易的使用纹理集,
具体原来我还不同理解,但个人感觉就是将原来很多零散的素材都集中到一个文件中,并且动画效果的演示帧图也会序列排放在文件中,并且每一个纹理集贴图的数据
在XML收集。格式如下:
每一个元素都有name 标记,还有坐标,长宽属性
<TextureAtlas imagePath="atlas.png"> <SubTexture name="moon" x="0" y="0" width="30" height="30"/>; <SubTexture name="jupiter" x="30" y="0" width="65" height="78"/>; ... </TextureAtlas>;
而目前要创建这个纹理集以及数据XML,我们都可以通过现成的工具来实现,从而大大节省开发周期
例如:
TexturePacker 这是一个强大的软件,可以使用GUI或者通过命令行来进行操作。
Sparrow Starling的姊妹框架Sparrow有一个简单的工具
这里我们使用TexturePacker来创建纹理集

打开软件后,我们首先要把所需要的元素都置入进来

并进行相应布局设置如图所示

保存输出,其配置数据XML为

接下来我们就要项目中声明绑定和使用这个纹理集了,我们还是在Assets类中声明绑定
package core { import starling.textures.Texture; import starling.textures.TextureAtlas; public class Assets { [Embed(source="assets/sky.png")] private static var sky:Class; public static var skyTexture:Texture; [Embed(source="assets/atlas.png")] private static var atlas:Class;
public static var ta:TextureAtlas; [Embed(source="assets/atlas.xml",mimeType="application/octet-stream")] private static var atlasXML:Class; public static function init():void { skyTexture = Texture.fromBitmap(new sky()); ta = new TextureAtlas(Texture.fromBitmap(new atlas()), XML(new atlasXML())); } } }
注意:创建纹理集在游戏初始化的时候只执行一次,在此之后你可以在游戏中随意引用他们。对,就这么简单!!!!

浙公网安备 33010602011771号