egret中API用法说明
一、egret.Texture
纹理类是对不同平台不同的图片资源的封装在HTML5中;
纹理集:使用纹理集的好处很多,我们通过将大量的图片拼合为一张图片从而减少网络请求,原先加载数次的图片资源现在加载一次即可。 同时,在引擎渲染的时候也会较少IO读取,从而提高性能。
Egret内置了纹理集的支持;我们需要先制作一张纹理集,具体使用的工具可以选择业内比较流行的 Texture Merger
public static createBitmapByName(name:string):egret.Bitmap { var result:egret.Bitmap=new egret.Bitmap(); var texture:egret.Texture=RES.getRes(name); result.texture=texture; return result; }
纹理的填充方式:http://edn.egret.com/cn/docs/page/134
纹理集使用:http://edn.egret.com/cn/docs/page/135
二、egret.Sprite
Sprite 类是基本显示列表构造块:一个可包含子项的显示列表节点。
class GridSprite extends egret.Sprite { public constructor() { super(); this.drawGrid(); } private drawGrid() { this.graphics.beginFill( 0x0000ff ); this.graphics.drawRect( 0, 0, 50,50 ); this.graphics.endFill(); this.graphics.beginFill( 0x0000ff ); this.graphics.drawRect( 50, 50, 50, 50); this.graphics.endFill(); this.graphics.beginFill( 0xff0000 ); this.graphics.drawRect( 50, 0, 50,50 ); this.graphics.endFill(); this.graphics.beginFill( 0xff0000 ); this.graphics.drawRect( 0, 50, 50,50 ); this.graphics.endFill(); } }
在文档类中,我们实例化 GridSprite
即可。
var _myGrid:GridSprite = new GridSprite(); this.addChild( _myGrid );
另外一种:
var sprcon1:egret.Sprite = new egret.Sprite(); sprcon1.graphics.beginFill( 0x00ff00 ); sprcon1.graphics.drawRect(0, 0, 100, 100); sprcon1.graphics.endFill(); this.addChild( sprcon1 ); sprcon1.x = 120; var sprcon2:egret.Sprite = new egret.Sprite(); sprcon2.graphics.beginFill( 0xff0000 ); sprcon2.graphics.drawRect(0, 0, 100, 100); sprcon2.graphics.endFill(); this.addChild( sprcon2 ); sprcon2.y = 130;
添加与删除对象:http://edn.egret.com/cn/article/index/id/109
显示容器:http://edn.egret.com/cn/article/index/id/108
三、egret.Bitmap(创建位图)
位图的使用离不开纹理的支持,在Egret中,我们默认隐藏了纹理的操作,所有操作均针对于显示对象进行。但位图的显示依然基于纹理。在显示一张图片时, 我们需要使用 Bitmap 类。这是egret中的图片类,而纹理则来自于我们加载的资源图片。通常情况下,我们会使用单张图片作为纹理,游戏中也会大量 使用纹理集来进行渲染。
创建一个图片对象需要使用 Bitmap 类,代码如下:
private img:egret.Bitmap = new egret.Bitmap();
此时我们得到一个位图对象,如果你将它添加到显示列表中,还不会看到任何内容。因为该位图对象仅仅是一个“对象”而已。我们没有为它指定任何的纹理, 那么位图对象也就无法显示任何内容。下面我们来给该位图对象指定一个纹理,指定纹理后,我们就可以在画面中看到渲染的文件了。
指定纹理的方式是设置 Bitmap 中的 texture 属性。
img.texture = RES.getRes("图片ID");
简单来说,所有加载的资源都会有一个唯一ID,这个ID绝大部分取自图片文件名称,也有一些资源会定义一些其他的ID。但这些图片的组织方式都是由 一个json文件来描述的。我们来看一下一个标准的资源配置文件,到底是什么样子的。
{ "resources": [ {"name":"bgImage","type":"image","url":"assets/bg.jpg"}, {"name":"egretIcon","type":"image","url":"assets/egret_icon.png"}, {"name":"description","type":"json","url":"config/description.json"} ], "groups": [ {"name":"preload","keys":"bgImage,egretIcon"} ] }
在一个json资源配置文件中,应该包含两大部分,一个是组,另外一个则是资源。
资源
包含在“resources”中,游戏中所有使用到的资源都应包含在此。每一个资源拥有三个属性。
-
name:对应资源的唯一ID编号。
-
type:资源类型
-
url:当前资源的路径
组
包含在“groups”中,组的概念是将不同的资源分类,当逻辑启动加载后,我们可以选择以组为单位进行加载。 我们来看一个具体的示例。
class BitmapTest extends egret.DisplayObjectContainer{ public constructor() { super(); this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this); } private onAddToStage(event:egret.Event) { RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.onGroupComplete, this); RES.loadConfig("resource/default.res.json", "resource/"); RES.loadGroup("preload"); } private onGroupComplete() { var img:egret.Bitmap = new egret.Bitmap(); img.texture = RES.getRes("bgImage"); this.addChild(img); } }
创建位图:http://edn.egret.com/cn/article/index/id/132
四:egret.TextField:(创建文本)
在Egret中,我们有三种类型的文本可以选择,分别为“普通文本”,“输入文本”和“位图文本”。 这些不同类型的文本在不同的场景下使用。对于不同类型的文本,其操作方式可能会有所不同。三种类型的文本特点如下:
-
普通文本:能够正常的显示各种文本,文本内容可以被程序设置,最为常见的文本类型。
-
输入文本:可以被用户输入的文本,常用于登陆中的输入框或者游戏中的聊天窗口。
-
位图文本:使用位图文字来渲染的文本,常用于游戏中需要加特殊字体效果的文本。
-
这篇文档中,我们以普通文本为例,介绍如何创建一个文本对象。
创建普通文本,我们可以直接创建一个 TextField
,并设置一些相关的属性,来控制我们的文本样式。我们添加如下代码:
var label:egret.TextField = new egret.TextField(); label.text = "这是一个文本"; this.addChild( label );
var textField:egret.TextField=new egret.TextField(); this.addChild(textField); textField.y=770; textField.textColor=0xffffff; textField.width=480; textField.height=100; textField.size=22; textField.textAlign="center"; textField.text="Powered by Egret Engine";
文本超链接事件
TextField本身可以响应Touch事件。但这是针对整个TextField的。
打开 URL
tx.textFlow = new Array<egret.ITextElement>( { text:"这段文字有链接", style: { "href" : "http://www.egret.com/" } } ,{ text:"\n这段文字没链接", style: {} } ); tx.touchEnabled = true;
文本超链接:http://edn.egret.com/cn/docs/page/149
创建文本:http://edn.egret.com/cn/docs/page/141
五、egret.Tween(创建动画)
Tween是Egret的动画缓动类(从小变大)
egret.Tween.get(this.go).to({"scaleX": 1, "scaleY":1,"x":this.nogScaleX,"y":this.nogScaleY},200).to({"visible":false},300).call(this.bbb,this);
API说明:http://developer.egret.com/cn/apidoc/index/name/egret.Tween
六、egret.Sound (创建音乐播放)
Sound 允许您在应用程序中使用声音。使用 Sound 类可以创建 Sound 对象、将外部音频文件加载到该对象并播放该文件。可通过 SoundChannel 对声音执行更精细的控制,如控制音量和监控播放进度。
示例
/** * 以下示例加载一个 MP3 文件,进行播放,并输出播放该 MP3 文件时所发生的声音事件的相关信息。 */ class SoundExample extends egret.DisplayObjectContainer { public constructor() { super(); this.startLoad(); } private startLoad():void { //创建 Sound 对象 var sound = new egret.Sound(); var url:string = "resource/assets/sound.mp3"; //添加加载完成侦听 sound.addEventListener(egret.Event.COMPLETE, this.onLoadComplete, this); //开始加载 sound.load(url); } private onLoadComplete(event:egret.Event):void { //获取加载到的 Sound 对象 var sound:egret.Sound = <egret.Sound>event.target; //播放音乐 var channel:egret.SoundChannel = sound.play(0,1); channel.addEventListener(egret.Event.SOUND_COMPLETE, this.onSoundComplete, this); } private onSoundComplete(event:egret.Event):void { egret.log("onSoundComplete"); } }
API参数说明:http://developer.egret.com/cn/apidoc/index/name/egret.Sound
七、egret.SoundChannel(关闭音频播放等)
API参数说明:http://developer.egret.com/cn/apidoc/index/name/egret.SoundChannel