Sprite2D
就像Mesh
之于 3D 渲染,Sprite
是 2D 渲染的基础对象,也是位姿控制的基础节点。但Sprite
不可以有自己的子节点,也就是说,add/removeChildren
这类方法不存在于Sprite
实例上。
示例
使用方法
Sprite
是渲染的基础对象,因此必须加入 Scene 中,才能被感知渲染。它的绘制方式有两种:
- Graphics
每个Sprite
均有一个Graphics
实例。Graphics
是 2D 绘制的基础,图形、线条、图片等所有 2D 对象均可以通过Graphics
完成。
// 新建Sprite
const sp = new Sprite();
// 绘制一个左上角坐标(0,0),宽50,高100的黑色矩形
sp.graphics.drawRect(0, 0, 50, 100, '#000');
// 将Sprite加入2D场景中
scene.addChildren(sp);
点击查阅具体如何使用Graphics。
- fromTexture
为了方便使用,.graphics.drawTexture
方法被再次封装为.fromTexture
方法,二者的使用方式完全相同,使用作用也完全相同。
常用能力
遮罩 (Mask)
遮罩(Mask),用于显示或隐藏 Sprite 的部分。
在下面的内遮罩示例中,尝试移动光标,查看遮罩下的显示效果。
遮罩本身也是一个Sprite
实例,它作为mask
属性赋给另一个Sprite
实例。需要注意的是,被赋予 mask 的Sprite
实例必须同时设置遮罩模式,才能确保遮罩按预期正确渲染。
按照「显示」和「隐藏」的两种目的,可以将遮罩模式(maskMode
)划分为:
- 内遮罩 (InnerVisible): 遮罩图片的覆盖范围可见,其它部分隐藏;
- 外遮罩 (OuterVisible): 遮罩图片的覆盖范围隐藏,其它部分可见。
// 创建Sprite和它的遮罩Sprite
const sp = new Sprite();
const maskSp = new Sprite();
// 指定maskSp为sp的遮罩
sp.mask = maskSp;
// 设置遮罩模式为内遮罩
sp.makMode = MaskMode.InnerVisible;
// 启动渲染
scene.addChildren(sp);
stage.loop(scene);
混合模式 (BlendMode)
混合模式 (BlendMode)是指,当两个及以上Sprite
叠加在一起时,按照何种方式将各自的像素混合处理,最终成像。
Tinoe 目前提供三种混合模式:
- Normal: 正常渲染,即渲染顺序靠后的会覆盖掉靠前的;
- Additive: 叠加渲染,即按照渲染顺序,一一叠加混合颜色;
- Transparent: 透明渲染,即透明不可见,注意透明 Sprite 仍真实存在于渲染树中,参与碰撞、拾取等交互。
// 改变某sprite的混合模式
sp.blendMode = BlendMode.Transparent;