Corona的位图遮照特性,允许你用一个image作为一个位图,将其应用到其他display object上。Corona把该image内部转成灰度图;黑色表示屏蔽,白色表示没有;一个遮照可以有自己的可以被间补的变换。通过被遮照的display object可以访问到这些属性。
一个位图遮照,可以被应用到其他display object上,但是有的对象是不会被遮照的,这包括text对象和本地的display object。
注意
当一个image被作为遮照加载后,就不能被当作image对象加载,反之亦然。规则就是每个文件一个纹理,因为纹理缓存中必须标明一个文件,要么是一个遮照,要么是一个RGBA纹理。
平台支持: Corona Simulator, iOS, 和 Android.
额外限制:
• 目前,遮照image的高度和宽度都需要被乘以4,否则你的app在Corona模拟器上运行很好,在设备上却会崩溃。
• 如果遮照image比display object还要小,遮照的边框被扩展到正好可以覆盖display object的大小。推荐在遮照的周围加上3个黑色的像素边框。
• 我们计划加入对禁用动态纹理加载和卸载的可选性的支持,以减轻对应用程序性能的要求。
• 对嵌套遮照层数有设备依赖限制。在Nexus ONe上,是2,在iPhone 3G上,至少是8。这和设备允许的纹理数量有关。我们计划加入一个系统查询,以便app可以确定平台自身要求的最大嵌套深度。
• 为了让遮照的顶层支持alpha,深度限制至少要为3。可能这只属于image的遮照,需要进一步的测试。
创建和设置遮照
graphics.newMask()
从一个image文件创建一个位遮照。这个image内部被转换为灰度图;黑色表示被遮照,白色相反。
语法
local mask = graphics.newMask( filename [, baseDir] )
object:setMask()
为一个display object关联一个遮照。
为了删除一个对象的遮照,请使用:object:setMask( nil) .
object:setMask( mask )
Display Object的遮照属性
当你用setMask()为一个display object设置遮照时,Corona会把display object的位置、大小、旋转属性加到遮照对象当中。你可以用下面的属性名来访问和修改它们(包括补间)。请参考范例工程 Graphics/X-ray 和 Graphics/Flashlight 来了解用法:
object.maskX
object.maskY
object.maskScaleX
object.maskScaleY
object.maskRotation