graphics.newMask()

类型 函数
graphics.*
返回值 蒙版
版本 版本 2024.3703
关键字 图像蒙版、遮罩、剪切、位蒙版
另请参阅 遮罩图像 (指南)
object:setMask()
object.isHitTestMasked
object.maskScaleX
object.maskScaleY

概览

从图像文件创建位蒙版。图像在内部转换为灰度。位蒙版的白色像素允许所覆盖图像可见,而黑色像素隐藏(遮罩)所覆盖图像。蒙版外的区域必须用黑色像素填充,这些黑色像素遮住了蒙版图像外的区域。

该函数返回 Mask 对象,可以使用 object:setMask() 将该对象应用于任何显示对象。

有关如何使用图像蒙版的演练,请参阅 遮罩图像 指南。

图像蒙版要求

问题

语法

graphics.newMask( filename [, baseDir] )
filename (必需)

字符串 要从中创建蒙版的图像文件的名称。

baseDir (可选)

常量 指定包含蒙版图像的目录路径。可以是以下任一项

  • system.ResourceDirectory (默认)
  • system.DocumentsDirectory
  • system.ApplicationSupportDirectory
  • system.TemporaryDirectory
  • system.CachesDirectory

示例

图像蒙版
-- Create and position image to be masked
local image = display.newImageRect( "image.png", 768, 1024 )
image:translate( display.contentCenterX, display.contentCenterY )
 
-- Create mask and apply to image
local mask = graphics.newMask( "circlemask.png" )
image:setMask( mask )
 
-- Transform mask
image.maskScaleX, image.maskScaleY = 2,2
显示组中的蒙版
local g = display.newGroup()
-- Create and position image to be masked, and insert into group
local image = display.newImageRect( g, "image.png", 768, 1024 )

-- Center the Display Group
g:translate( display.contentCenterX, display.contentCenterY )
 
local mask = graphics.newMask( "circlemask.png" )
g:setMask( mask )
动态选择的蒙版
-- This example shows how to select a different mask image based on the dynamic image suffix
-- It ensures that higher-resolution masks are used when the device resolution warrants it

-- Create and position image to be masked
local image = display.newImageRect( "image.png", 768, 1024 )
image:translate( display.contentCenterX, display.contentCenterY )

-- Create up-value reference for mask
local mask

-- Check the image suffix values and pick the correct mask
if ( display.imageSuffix == "@4x" ) then
    --print( "using @4x" )
    mask = graphics.newMask( "[email protected]" )
    image:setMask( mask )
    image.maskScaleX = 0.25
    image.maskScaleY = 0.25

elseif ( display.imageSuffix == "@2x" ) then
    --print( "using @2x" )
    mask = graphics.newMask( "[email protected]" )
    image:setMask( mask )
    image.maskScaleX = 0.5
    image.maskScaleY = 0.5

else
    --print( "using @1x" )
    mask = graphics.newMask( "circlemask.png" )
    image:setMask( mask )
end