跳到主要内容

路径(Path)

Path 是可被 Renderer 绘制的可变路径对象。

未改变的路径可在同一帧绘制多次;但若绘制后又修改(moveTolineTocubicToadd 等),需等到下一帧再绘制。

构造器(Constructors)

new

local path = Path.new()
path:moveTo(Vector.xy(0, 0))

方法(Methods)

moveTo

将当前点移动到指定位置,并开始新轮廓。

path:moveTo(Vector.xy(0, 0))

lineTo

从当前点到指定点添加直线段。

path:lineTo(Vector.xy(10, 0))

quadTo

添加二次贝塞尔曲线(quadratic Bézier)。

path:quadTo(
Vector.xy(-50, -50), -- control point
Vector.xy(0, 0) -- end point
)

cubicTo

添加三次贝塞尔曲线(cubic Bézier)。

path:cubicTo(
Vector.xy(25, -40), -- control point out
Vector.xy(75, 40), -- control point in
Vector.xy(100, 0) -- end point
)

close

闭合当前轮廓:从当前点连回该轮廓首点(最近一次 moveTo)。

-- Draw a rectangle
path:moveTo(Vector.xy(-10, -10))
path:lineTo(Vector.xy(10, -10))
path:lineTo(Vector.xy(10, 10))
path:lineTo(Vector.xy(-10, 10))
-- Close the path
path:close()

__len

每个条目都是 PathCommand

local cmd = path[1]
print(cmd.type)

返回路径命令数。

local count = #path
print(count)

reset

同一帧中如果已绘制该 Path,请勿再修改或 reset

若需修改,请在下一帧再操作。

path:reset()

add

other 的命令追加到当前路径。若提供 transform,追加时应用变换。

local dst = Path.new()
local src = Path.new()

src:moveTo(Vector.xy(0, 0))
src:lineTo(Vector.xy(10, 0))
src:lineTo(Vector.xy(10, 10))
src:close()

-- Add `src` into `dst` (optionally with a transform)
dst:add(src)

contours

返回首个轮廓的 ContourMeasure,可通过 next 遍历。若无轮廓返回 nil

local contour = path:contours()
while contour do
print(contour.length)
contour = contour.next
end

measure

返回整条路径的 PathMeasure

local measure = path:measure()
local pathLength = measure.length
print(pathLength)