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在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
潜说js对象和数组
May 25 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
JavaScript语言核心数据类型和变量使用介绍
Aug 23 Javascript
JS 实现导航栏悬停效果(续2)
Sep 24 Javascript
easyui-combobox 实现简单的自动补全功能示例
Nov 08 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
May 10 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
在antd Table中插入可编辑的单元格实例
Oct 28 Javascript
vue vant中picker组件的使用
Nov 03 Javascript
微信小程序实现多行文字滚动
Nov 18 Javascript
js实现圆形菜单选择器
Dec 03 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
js获取Get值的方法
2016/09/29 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
python版本单链表实现代码
2018/09/28 Python
详解Python做一个名片管理系统
2019/03/14 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
师范大学毕业自我鉴定
2013/11/21 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
历史学专业求职信
2014/06/19 职场文书
放射科岗位职责
2015/02/14 职场文书
人代会简报
2015/07/21 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
礼仪培训心得体会
2016/01/22 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python