Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

五分钟学会Corona(六) - Bitmap Mask
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
<< 五分钟学会Corona(五) - DisplayObject和Stage五分钟学会Corona(七) - 基本运动与变换 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Copyright 2011-2015 BuildApp.Net. All Rights Reserved.