一、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”中,游戏中所有使用到的资源都应包含在此。每一个资源拥有三个属性。

  1. name:对应资源的唯一ID编号。

  2. type:资源类型

  3. 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

 

版权声明:本文为chenguiya原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chenguiya/p/7776988.html