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实现状态限定编辑的代码
Feb 11 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Sep 04 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
layui动态渲染生成select的option值方法
Sep 23 Javascript
学前端,css与javascript重难点浅析
Jun 11 Javascript
JavaScript DOM常用操作代码汇总
Jul 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
php htmlspecialchars加强版
2010/02/16 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
python根据经纬度计算距离示例
2014/02/16 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
校园网站的创业计划书范文
2013/12/30 职场文书
入党积极分子介绍信
2014/01/17 职场文书
美术国培研修感言
2014/02/12 职场文书
人事科岗位职责范本
2014/03/02 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
初中家长评语和期望
2014/12/26 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Java实现简单小画板
2022/06/10 Java/Android