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 相关文章推荐
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
JavaScript this调用规则说明
Mar 08 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
uploadify 3.0 详细使用说明
Jun 18 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
js实现上传图片预览方法
Oct 25 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
Bootstrap响应式表格详解
May 23 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
Sep 22 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 Javascript
基于JavaScript实现单例模式
Oct 30 Javascript
vue项目或网页上实现文字转换成语音播放功能
Jun 09 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
Terran魔法科技
2020/03/14 星际争霸
德生9700DX电路分析
2021/03/02 无线电
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
PHP实现简单的计算器
2020/08/28 PHP
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
Node.js实现文件上传
2016/07/05 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python切片索引用法示例
2018/05/15 Python
python mysql断开重连的实现方法
2019/07/26 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
仓库管理制度
2014/01/21 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
安全生产责任书
2014/03/12 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
利用Apache Common将java对象池化的问题
2022/06/16 Servers
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript