路径(Path)
Path 是可被 Renderer 绘制的可变路径对象。
未改变的路径可在同一帧绘制多次;但若绘制后又修改(moveTo、lineTo、cubicTo、add 等),需等到下一帧再绘制。
构造器(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)