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实现带搜索功能的下拉框实时搜索实时匹配
Nov 05 Javascript
浅析jQuery1.8的几个小变化
Dec 10 Javascript
javascript中不提供sleep功能如何实现这个功能
May 27 Javascript
jquery根据属性和index来查找属性值并操作
Jul 25 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
javascript相关事件的几个概念
May 21 Javascript
Move.js入门
Feb 08 Javascript
jquery实现tab键进行选择后enter键触发click行为
Mar 29 jQuery
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
Jul 04 Javascript
JS数组的高级使用方法示例小结
Mar 14 Javascript
vue实现简单学生信息管理
May 30 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
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
Python安装whl文件过程图解
2020/02/18 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
大学生怎样进行自我评价
2013/12/07 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
简历自我评价优缺点
2015/03/11 职场文书
安全教育主题班会总结
2015/08/14 职场文书
python 逐步回归算法
2021/04/06 Python
python tkinter模块的简单使用
2021/04/07 Python
深度学习小工程练习之垃圾分类详解
2021/04/14 Python