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 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
jquery的ajax简单结构示例代码
Feb 17 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
JQuery的Pager分页器实现代码
May 03 Javascript
jQuery插件开发汇总
May 15 Javascript
详解jQuery中关于Ajax的几个常用的函数
Jul 17 jQuery
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
小程序两种滚动公告栏的实现方法
Sep 17 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 Javascript
vue $mount 和 el的区别说明
Sep 11 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
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
Seajs的学习笔记
2014/03/04 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
python 域名分析工具实现代码
2009/07/15 Python
Python threading多线程编程实例
2014/09/18 Python
Python线程的两种编程方式
2015/04/14 Python
详解Python if-elif-else知识点
2018/06/11 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
大家访活动实施方案
2014/03/10 职场文书
主题党日活动总结
2014/07/08 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
暑假生活随笔
2015/08/15 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
浅谈JavaScript作用域
2021/12/06 Javascript
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers