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 相关文章推荐
自用js开发框架小成 学习js的朋友可以看看
Nov 16 Javascript
精通Javascript系列之数值计算
Jun 07 Javascript
JS仿Windows开机启动Loading进度条的方法
Feb 26 Javascript
Jquery操作Ajax方法小结
Nov 29 Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 Javascript
jQuery表单验证简单示例
Oct 17 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
微信小程序之页面跳转和参数传递的实现
Sep 29 Javascript
JavaScript选择排序算法原理与实现方法示例
Aug 06 Javascript
IE9 elementUI文件上传的问题解决
Oct 17 Javascript
layDate日期控件使用方法详解
Nov 15 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
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
php解压文件代码实现php在线解压
2014/02/13 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
Python生成随机数的方法
2014/01/14 Python
Python中DJANGO简单测试实例
2015/05/11 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
谈谈python中GUI的选择
2018/03/01 Python
儿童编程python入门
2018/05/08 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
母亲节演讲稿范文
2014/01/02 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
高中生职业规划范文
2014/03/09 职场文书
小学生读书活动总结
2014/06/30 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
考研导师推荐信范文
2015/03/27 职场文书
法制教育观后感
2015/06/17 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
JS实现简单的九宫格抽奖
2022/06/28 Javascript