CoronaSDK GroupObject 组对象考

1 总览

夫组者,无边无际,其根stage为所有newGroup之parent。

组可为Image、Text等displayObject之父,亦可为group之父层层嵌套。

2 坐标系统

new出的group的默认坐标为(0,0),位于stage之左上角。

3 绘制模式

一group如一张纸,displayObject如其上所绘之物(物随纸动)。多个group层叠,如多张纸,类似分层。

譬若你要画幅山水画,可能会如下分三层:

a 远景:包括天空、云朵等

b 近景:包括背景山峰

c 前景:包括树木、花草和石头

三层按照前后顺序叠在一起,当然每层可以理解为一个背景透明的纸(图层)。

4 创造Group

local myGroup = display.newGroup()

将displayObject插入组中无非二法:

local rect = display.newRect( 0, 0, 40, 40 )
myGroup:insert( rect )

local rect = display.newRect( myGroup, 0, 0, 40, 40 )

5 组层次

新建组在下,后建组在上:

local farBackground = display.newGroup()
local nearBackground = display.newGroup() --this will overlay ‘farBackground‘
local foreground = display.newGroup() --and this will overlay ‘nearBackground‘

注:求组内成员个数只能用group.numChildren,而不能#group

6 删组

删group对象无非myGroup:removeSelf()或display.remove( myGroup )

然后记得解除引用,即myGroup=nil

假设myGroup含有其他子对象(displayObject或groupObject),则子对象也会被自动调用删除函数,只是子对象的引用也必须自行赋nil。

7 组的子属性

当你修改group的子属性,所有组内的Object(displayObject或groupObject)皆被修改。非组有属性,乃子对象有属性,可从组级别将子对象属性全改之。

比如:group.alpha = 0.5, 并非表示设置group的alpha属性为0.5,而是修改了group下所有子对象的alpha为0.5。可以修改组子属性的还包括位移和旋转等。

8 组变换

同上,组变换一样被应用到组的所有子成员上。组成员的position其实是相对于parent的position(相对坐标也),并且当你对一个group进行变换时,其子成员皆被变换之。

local myGroup = display.newGroup()

local myBox = display.newRect( 100, 100, 80, 80 )
myBox:setFillColor( 1, 0, 0, 0.8 )
myGroup:insert( myBox )

如果改变myGroup的位置:

myGroup.x = 50
myGroup.y = 50

结论如图所示,一目了然。

不管对group做了何种变换(moved/scaled/rotated),都可以通过 object:localToContent() 算出一个实际对象的全局坐标。

local actualBoxX, actualBoxY = myBox:localToContent( 0,0 )
print( actualBoxX, actualBoxY )

9 组与锚点

由于组无大小边界,所以一般不考虑锚点。实在需要考虑,则会以含有对象总体最大边界为边界,简单图使如下:

myGroup.anchorChildren = true

一般无需考虑这个方案,只需把当前group放在一个父组(parent)里,只需要对parent进行变换即可达到同样效果。

10 离屏切除

corona会在渲染的时候剔除掉屏幕表面以外的displayObject。

时间: 2024-11-15 20:23:44

CoronaSDK GroupObject 组对象考的相关文章

新建类型组对象

在ABAP开发中,经常需要定义一些常量或者变量,而且可能存在多个程序中需要用到类似的变量或者结构体,如果在每个程序中都需要重复定义这些变量或者结构体的话,势必存在重复的代码编写,而且也容易出错,当需要变动时可以同时修改多个程序,造成一些冗余的工作. SAP提供了类型组,允许用户建立一些公用的对象,允许在不同的程序中调用,这样不但实现了代码维护的简化,而且能够方便开发人员更好的管理程序. 类型组也称为类型池,通过数据字典对象进行维护,所创建的对象能被ABAP程序及RFC使用. 新建类型组: SE1

JavaScript学习笔记2-数组对象

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <script> 9 //合并数组 10 var arr1 = ["Hello","World",&q

js数组对象的父数据对象-子数组对象,(数组对象相减)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script> var gridData_1=[{"name":"123",age:12},{"name":&q

mssql sqlserver 对不同群组对象进行聚合计算的方法分享

摘要: 下文讲述通过一条sql语句,采用over关键字同时对不同类型进行分组的方法,如下所示: 实验环境:sql server 2008 R2 当有一张明细表,我们需同时按照不同的规则,计算平均.计数.求和等聚合计算时,此时我们可以使用over子句对数据进行操作.例: 我们需获取一个学生成绩的 总平均分 各科平均分 学生单科成绩同平均分的差异,此时我们可以多次使用over子句,得出我们想要的结果, select [课程名], [姓名], [成绩], AVG([成绩]) over () as [总

CoronaSDK场景管理库:Composer library (上)

Composer是corona官方提供的场景创建和管理系统,我大CoronaSDK果然威武! 1 场景者,何也 corona中的每个场景是以一个lua文件的形式出现,多个.lua文件分散在你的项目中组成众多场景.你编写这些lua文件的时候必须遵循一些规则,以便Composer可以正确理解你的场景代码. 场景代码文件中须得包含两样东西,以使得场景可以被正确地初始化: 四个监听函数来处理Composer生成的场景事件 四行监听函数声明以及把场景对象返回的语句 具体的例子呆会可以看后面的场景模版. 因

多线程三(线程组和线程池)

线程组和线程池 一. 线程组 1. 线程组介绍及使用 Java使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许直接对线程组进行控制.对线程组的控制相当于控制这批线程. 在默认情况下,子线程和创建它的父线程同属于一个线程组. 一旦线程假如某个线程组之后,该线程将一直属于该线程组,知道该线程死亡,线程运行途中不能改变它所属的线程组. Thread提供了不同构造器设置新创建的线程属于哪个线程组.提供getThreadGroup()方法返回该线程所属的线程组对象. Th

python-selenium-定位一组对象

定位一组对象一般用于以下场景: 批量操作对象,比如将页面上所有的checkbox都勾上 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象.比如定位出页面上所有的checkbox,然后选择最后一个 checkbox.html 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 4 <title

3 类与对象

1.对象的本质 对象是一个具有状态.行为和标识符的实体.结构和行为类似的对象定义在它们共同的类中. 1.1 对象的状态: 包括这个对象的所有属性以及每个属性的当前值 一个属性是一种内在或独特的特征.特点.品质或特性 1.2 对象的行为 对象在状态改变或消息传递方面的动作或反映方式 对象的状态代表一个类行为的累积 1.方法:代表一对象提供给其他对象的一种服务 修改.选择.遍历.构造.销毁 2.角色和责任 对象的状态和行为共同决定了这个对象可以扮演的角色 对象扮演的角色是动态的,也是互斥的 3.对象

selenium python (六)定位一组对象

checkbox源码: <html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>Checkbox</title><script type="text/javascript" async="" src="https://ajax.goog