Egret引擎开发指南之视觉编程


Posted in Javascript onSeptember 03, 2014

显示对象和显示列表

“显示对象”,准确的含义是可以在舞台上显示的对象。可以显示的对象,既包括可以直接看见的图形、文字、视频、图片等,也包括不能看见但真实存在的显示对象容器。

在Egret中,视觉图形都是由显示对象和显示对象容器组成的。

Egret引擎开发指南之视觉编程

如果我们要表达上图中的场景,我们应该如何通过树的方式来描述呢?

显示对象等级结构

在Egret中,显示对象被分为两大类:一种是可以包括其他显示对象的显示对象容器,简称为“容器”。另外一种是单纯的显示对象,除自身以外不能包括其他显示对象,简称“非容器对象”。

在实际的操作中,我们可以把这样一种结构看成一个树状结构,容器可理解为树枝,非容器对象则可以理解为树叶。

Egret引擎开发指南之视觉编程

在这个树状结构中,处于最上层的,就是“舞台”。对应到程序中,我们可以看到一个 stage 对象。舞台是Egret显示架构中最根本的显示容器。每个Egret应用有且只有一个stage对象。舞台是这个显示树结构的根节点。

在舞台中,我们还拥有一个主容器。这个容器就是文档类所创建的容器。每一个Egret都会拥有一个文档类,这个文档类必须是一个显示对象容器。

在这个场景中,我们包含了一个场景背景,而背景是由背景图和一颗大树组成的。另外两个元素是由人物和一个草地组成的。

显示列表

上面我们所看到的树状显示对象结构图实际上就是Egret的“显示列表”。

使用显示列表管理容器和非容器对象是非常方便的,当某一个显示对象处在在显示列表中,我们就可以在画面中看到该对象。当我们将显示对象从显示列表中移除后,该对象则从画面中消失。

在Egret内部维护着一个显示列表,开发者无需关心该列表是如何运行的,你只需要对自己的显示对象进行相应的操作即可。

显示对象种类

Egret在架构设计过程中围绕显示列表的概念,对所有对象进行了严格的封装。在Egret中,所有的显示对象均继承自 DisplayObject 这个类。DisplayObject 类也就是我们前面描述的“显示对象”。在Egret中,所有的“容器”均继承自 DisplayObjectContainer

为了统一管理显示列表,所有显示对象都统一于DisplayObject类。所有的显示对象都继承自DisplayObject,而DisplayObject则继承自EventDispatcher。也就是说所有的显示对象均可以发送事件。

DisplayObjectContainer显示对象容器的父类也是DisplayObject。

Egret引擎开发指南之视觉编程

我们在实际操作中把概念再次简化,可以归纳为两条规则:

直接继承自DisplayObject的类都属于非容器。继承自DisplayObjectContainer的类都属于容器。

Javascript 相关文章推荐
基于jquery循环map功能的代码
Feb 26 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
整理Javascript流程控制语句学习笔记
Nov 29 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
js操作DOM--添加、删除节点的简单实例
Jul 08 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
详解jQuery中的easyui
Sep 02 jQuery
electron中使用bootstrap的示例代码
Nov 06 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
Egret引擎开发指南之发布项目
Sep 03 #Javascript
Egret引擎开发指南之运行项目
Sep 03 #Javascript
JavaScript实现找出字符串中第一个不重复的字符
Sep 03 #Javascript
Egret引擎开发指南之编译项目
Sep 03 #Javascript
js和jquery中循环的退出和继续下一个循环
Sep 03 #Javascript
Egret引擎开发指南之创建项目
Sep 03 #Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
Sep 03 #Javascript
You might like
中国收音机工业发展史
2021/03/02 无线电
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
PHP安全上传图片的方法
2015/03/21 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
jquery $("#variable") 循环改变variable的值示例
2014/02/23 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
个人应聘自我评价分享
2013/11/18 职场文书
2014年冬季防火方案
2014/05/21 职场文书
增员口号大全
2014/06/18 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
个人维稳承诺书
2015/05/04 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏