Egret Engine 2D基础教学

基本概念

显示对象

1.基本概念

“显示对象”,是可以在舞台上显示的对象。可以显示的对象,既包括可以直接看见的图形、文字、视频、图片等,也包括不能看见但真实存在的显示对象容器。在Egret中,视觉图形都是由显示对象和显示对象容器组成的。
DisplayObject类是所有显示对象的父类,该类包含显示对象共有的属性与方法。

2.可视属性

可视属性用来定量描述显示对象在舞台中的显示状态,结合下图说明可视属性的含义。
在这里插入图片描述
如上图1所示,在Egret中定义舞台的坐标系

原点在屏幕左上角。

横轴使用X表示,向右为正。

纵轴使用Y表示,向下为正。

上图1中包含一个灰色的矩形,该矩形拥有一个“锚点”,Egret使用该点的坐标表示矩形的坐标。通过 x 和 y 属性访问修改显示对象的坐标位置。示例代码如下:

var shape:egret.Shape = new egret.Shape();
shape.x = 100;
shape.y = 20;

图2中展示了显示对象的缩放功能。缩放是指将显示对象的宽或高进行比例缩放。缩放功能通过 scaleX 和 scaleY 属性来实现。图中,对灰色的矩形宽高进行0.5倍缩放。示例代码如下:

var shape:egret.Shape = new egret.Shape();
shape.alpha = 0.4;

图4中展示了显示对象的旋转操作,旋转角度可通过 rotation 属性访问修改。将图中的矩形旋转30°,示例代码如下:

var shape:egret.Shape = new egret.Shape();
shape.rotation = 30;

上图展示了显示对象中常用的可视属性,下面列表是显示对象的全部可视属性。

alpha:透明度
width:宽度
height:高度
rotation:旋转角度
scaleX:横向缩放
scaleY:纵向缩放
skewX:横向斜切
skewY:纵向斜切
visible:是否可见
x:X轴坐标值
y:Y轴坐标值
anchorOffsetX:对象绝对锚点X
anchorOffsetY:对象绝对锚点Y
3.核心显示类
不同的内容对应不同的显示对象,Egret 中一共封装了8个显示相关的核心类,如下表。

描述
DisplayObject显示对象基类,所有显示对象均继承自此类
Bitmap位图,用来显示图片
Shape用来显示矢量图,可以使用其中的方法绘制矢量图形
TextField文本类
BitmapText位图文本类
DisplayObjectContainer显示对象容器接口,所有显示对象容器均实现此接口
Sprite带有矢量绘制功能的显示容器
Stage舞台类
4.自定义显示对象类

自定义显示对象类需要继承自 DisplayObject的具体子类,例如Shape或者TextField。

示例代码如下:

  • 创建
    创建一个名称为 MyGrid 的类,并且继承自 Shape 。具体代码如下:
class MyGrid extends egret.Shape{
    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();               
    }
}

在 MyGrid 中绘制了一个红蓝相间的2*2格子,然后修改文档类Main,在文档类中创建并显示 MyGrid类的实例,具体代码如下:

class Main extends egret.DisplayObjectContainer{
    public constructor(){
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
    }
    private onAddToStage(event:egret.Event){
        var _myGrid:MyGrid = new MyGrid();
        this.addChild( _myGrid );
    }
}
  • 效果
    编译并测试,在浏览器中看到如下图的效果。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值