Egret引擎开发指南之视觉编程

显示对象和显示列表

“显示对象”,准确的含义是可以在舞台上显示的对象。可以显示的对象,既包括可以直接看见的图形、文字、视频、图片等,也包括不能看见但真实存在的显示对象容器。

在Egret中,视觉图形都是由显示对象和显示对象容器组成的。

如果我们要表达上图中的场景,我们应该如何通过树的方式来描述呢?

显示对象等级结构

在Egret中,显示对象被分为两大类:一种是可以包括其他显示对象的显示对象容器,简称为“容器”。另外一种是单纯的显示对象,除自身以外不能包括其他显示对象,简称“非容器对象”。

在实际的操作中,我们可以把这样一种结构看成一个树状结构,容器可理解为树枝,非容器对象则可以理解为树叶。

在这个树状结构中,处于最上层的,就是“舞台”。对应到程序中,我们可以看到一个 stage 对象。舞台是Egret显示架构中最根本的显示容器。每个Egret应用有且只有一个stage对象。舞台是这个显示树结构的根节点。

在舞台中,我们还拥有一个主容器。这个容器就是文档类所创建的容器。每一个Egret都会拥有一个文档类,这个文档类必须是一个显示对象容器。

在这个场景中,我们包含了一个场景背景,而背景是由背景图和一颗大树组成的。另外两个元素是由人物和一个草地组成的。

显示列表

上面我们所看到的树状显示对象结构图实际上就是Egret的“显示列表”。

使用显示列表管理容器和非容器对象是非常方便的,当某一个显示对象处在在显示列表中,我们就可以在画面中看到该对象。当我们将显示对象从显示列表中移除后,该对象则从画面中消失。

在Egret内部维护着一个显示列表,开发者无需关心该列表是如何运行的,你只需要对自己的显示对象进行相应的操作即可。

显示对象种类

Egret在架构设计过程中围绕显示列表的概念,对所有对象进行了严格的封装。在Egret中,所有的显示对象均继承自 DisplayObject 这个类。DisplayObject 类也就是我们前面描述的“显示对象”。在Egret中,所有的“容器”均继承自 DisplayObjectContainer。

为了统一管理显示列表,所有显示对象都统一于DisplayObject类。所有的显示对象都继承自DisplayObject,而DisplayObject则继承自EventDispatcher。也就是说所有的显示对象均可以发送事件。

DisplayObjectContainer显示对象容器的父类也是DisplayObject。

我们在实际操作中把概念再次简化,可以归纳为两条规则:

直接继承自DisplayObject的类都属于非容器。继承自DisplayObjectContainer的类都属于容器。相关阅读:

jquery实现鼠标点击后展开列表内容的导航栏效果

深入浅出学习Android ListView基础

php短信接口代码

Yii实现单用户博客系统文章详情页插入评论表单的方法

Java编程中线程池的基本概念和使用

详解java装饰模式(Decorator Pattern)

jQuery:delegate中select()不起作用的解决方法(实例讲解)

php使用异或实现的加密解密实例

Java判断字符串为空、字符串是否为数字

Android实现使用流媒体播放远程mp3文件的方法

11个实用的Linux终端命令总结

JavaScript实现鼠标点击后层展开效果的方法

深入理解jQuery中live与bind方法的区别

深入解析php之sphinx

egret php交互,JavaScript_Egret引擎开发指南之视觉编程,显示对象和显示列表 “显示 - phpStudy...相关推荐

  1. 【ArduPilot开发指南】1.2.1 完整的参数列表 - AP_Periph参数

    [ArduPilot开发指南]目录 这是所有可以被设置的参数列表(例如,通过MAVLink协议)来控制机器行为.它们可持久化保存在机器中. 这个列表由最新的ArduPilot源码自动生成,所以可能包含 ...

  2. 【ArduPilot开发指南】1.2.7 完整的参数列表 - BATTx_参数

    [ArduPilot开发指南]目录 这是所有可以被设置的参数列表(例如,通过MAVLink协议)来控制机器行为.它们可持久化保存在机器中. 这个列表由最新的ArduPilot源码自动生成,所以可能包含 ...

  3. egret发布的HTML5项目怎么打开,Egret引擎开发指南之发布项目

    在Egret中,使用发布功能也非常的简单.你只需要使用如下命令即可: egret publish HelloWorld 此命令中egret publish为发布命令,HelloWorld是你当前项目的 ...

  4. egret可以用php做后端吗,Egret引擎开发指南之创建项目_node.js

    Egret提供非常方便的创建工具,我们把创建后的文件总和称之为项目.在后面的操作中,我们对创建的项目进行操作,具体创建步骤如下: 需要注意的是Egret支持Windows和Mac OS X 两个平台. ...

  5. egret可以用php做后端吗,Egret引擎开发指南之发布项目_node.js

    在Egret中,使用发布功能也非常的简单.你只需要使用如下命令即可: egret publish HelloWorld 此命令中egret publish为发布命令,HelloWorld是你当前项目的 ...

  6. 【Android LibGDX游戏引擎开发教程】第07期:中文字体的显示和绘制(上)

    在字体的显示和绘制中,Libgdx的作者(Mario Zechner,美国人)给我们提供了一个非常好用的工具 --Hiero,那么下面就来看看它具体的使用方法. 一.Hiero工具的使用 1.Hier ...

  7. MUI开发指南(二) webview对象

    WebviewObject 对象详解 opener      id属性    窗口层叠关系    页面历史记录操作 WebviewStyles对象举例 plus.webview.WebviewStyl ...

  8. Layabox引擎开发H5打地鼠游戏(一)

    第一节 构造打地鼠界面 创建项目并导入资源: 制作打地鼠界面: 加载资源并显示界面: 代码及相关资源下载 创建项目并导入资源 创建项目 本项目没有用到下图文件夹原有的组件,将图片全部删除 导入图片 制 ...

  9. python怎么制作游戏图片_Python游戏引擎开发(二):显示图片

    本篇文章是Python游戏引擎开发系列的第二篇文章,主要介绍如何显示图片,大家可以学习下. 在上一章中我们讲了如何创建窗口以及对界面进行重绘.可能有朋友不理解为什么要进行全窗口的重绘呢?我在这里可以大 ...

  10. 【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》

    开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics ...

最新文章

  1. FFmpeg扩展开发
  2. logic多分类的两种类别
  3. MySQL5.7多源复制的实验
  4. mysql 三级联动_c#+Mysql 实现三级联动
  5. CI/CD——适合你吗?
  6. sql 触发器未触发_学习SQL:SQL触发器
  7. Rust: 逆序输出str
  8. 高德地拖缩放怎么保证中心点不变_出国学习,价值何在?听听留学生们怎么说...
  9. YYKit框架使用学习之整理
  10. 清明上河图30亿像素_清明上河图高清下载|
  11. tl wn322g linux驱动下载,TP-Link TL-WN322G+网卡驱动
  12. “被裁员之前,没得到任何风声,措手不及...” 一个在职6年测试工程师内心独白
  13. 2019高考数学必考知识点,高考数学知识板块
  14. 二分法和黄金分割法的区别和联系,附Python代码
  15. 【Keras】使用LSTM预测股票走势
  16. ElasticSearch 升级过程中给涉及到的术语-1、同步刷新synced  flush
  17. 正电子计算机全身显像(pet ct),正电子发射型计算机断层显像CT (PET-CT)避 免漏诊眼睑恶性肿瘤伴全身转移一例...
  18. 如何将WPS转换成office,WPS转office的转换方法
  19. 泛融科技CEO王小彬:区块链技术创造新商业模式
  20. linux的常用备份方法,Linux系统下常用的数据备份方法

热门文章

  1. Tableau——其他参考方法
  2. poj 3345 Bribing FIPA
  3. 应用商店优化(ASO)之关键词及描述优化
  4. bzoj 3709 [PA2014]Bohater
  5. 平面向量内积坐标公式推导_向量的数量积的坐标运算公式是如何推导出的 两个向量的向量积公式是怎...
  6. 河南第八届ACM省赛(真题训练)
  7. MaxToMaya(3DMax场景转换插件)v1.4版
  8. 如何获取网页logo与favicon图标使用
  9. 软件开发过程回归与回溯之区别
  10. 显著性检验--学习笔记