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 相关文章推荐
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
Nov 30 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
Sep 11 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
详解Backbone.js框架中的模型Model与其集合collection
May 05 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 Javascript
vue-router 中 meta的用法详解
Nov 01 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 Javascript
vue自定义正在加载动画的例子
Nov 14 Javascript
vue-cli点击实现全屏功能
Mar 07 Javascript
js实现跳一跳小游戏
Jul 31 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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python实现基于信息增益的决策树归纳
2018/12/18 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
六五普法规划实施方案
2014/03/21 职场文书
《春天来了》教学反思
2014/04/07 职场文书
五四青年节演讲稿
2014/05/26 职场文书
机关党员公开承诺书
2014/08/30 职场文书
机关作风建设自查报告
2014/10/22 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
刑事申诉状范文
2015/05/20 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
python如何读取.mtx文件
2021/04/22 Python
Python基础知识学习之类的继承
2021/05/31 Python
青岛市的收音机研制与生产
2022/04/07 无线电
Oracle 多表查询基本语法实例
2022/04/18 Oracle
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL