object.canvas

类型 GroupObject(组对象)
Object(对象) SnapshotObject(快照对象)
display.*
修订 版本 2024.3703
关键词 canvas(画布)
另请参阅 display.newSnapshot()
snapshot:invalidate()

概述

此组是一个特殊的屏幕外组,允许您在快照的纹理上绘制,而无需重新绘制 snapshot.group 中的对象。

语法

snapshot.canvas

画布式失效

通常,快照失效会导致在将快照组的子对象渲染到纹理之前清除纹理。

相反,当画布失效时,它们会渲染到纹理上,而不会先清除纹理。

要使画布失效,只需将 "canvas" 参数传递给 snapshot:invalidate(),如下例所示。

子对象

默认情况下,当画布失效时,画布的子对象会在下一个渲染过程中被*追加*到 快照组 中。此时,画布将为空。

您可以通过将 canvasMode 设置为 "discard" 来更改此设置,以便*丢弃*画布的子对象。

画布属性

画布的属性将被忽略,并且不会影响渲染结果。

相反,出于渲染目的,将使用 snapshot.group 的属性。

例如,位置(或旋转、缩放、alpha 等)等属性将取自快照的组属性,而不是画布属性。

此外,对 snapshot.canvas 的更改将在绘制画布对象之前重置为 snapshot.group 的相应值。

画布组与普通组

画布组的行为与普通的 一样,除了以下几点:

示例

local w,h = display.contentWidth,display.contentHeight 
local snapshot = display.newSnapshot( w, h )

local brush = display.newImage( "brush.png" )
snapshot.canvas:insert( brush )

snapshot:invalidate( "canvas" )