遮罩 Mask
Mask 组件可以将 GameObject 的展示范围进行裁剪,使用前需要安装渲染器。
安装
使用 NPM
npm i @eva/plugin-renderer @eva/plugin-renderer-mask
在浏览器中
<script src="https://unpkg.com/@eva/plugin-renderer-mask@1.2.x/dist/EVA.plugin.renderer.mask.min.js"></script>
使用
import { Game, GameObject, resource, RESOURCE_TYPE } from '@eva/eva.js'
import { RendererSystem } from '@eva/plugin-renderer'
import { Img, ImgSystem } from '@eva/plugin-renderer-img'
import { Mask, MaskSystem, MASK_TYPE } from '@eva/plugin-renderer-mask'
resource.addResource([
{
name: 'heart',
type: RESOURCE_TYPE.IMAGE,
src: {
image: {
type: 'png',
url: '//gw.alicdn.com/bao/uploaded/TB1lVHuaET1gK0jSZFhXXaAtVXa-200-200.png'
}
},
preload: false
},
{
name: 'tag',
type: RESOURCE_TYPE.SPRITE,
src: {
image: {
type: 'png',
url: '//gw.alicdn.com/mt/TB1KcVte4n1gK0jSZKPXXXvUXXa-150-50.png'
},
json: {
type: 'json',
url: '//gw.alicdn.com/mt/TB1d4lse4D1gK0jSZFsXXbldVXa.json'
}
},
preload: true
}
])
const game = new Game({
systems: [
new RendererSystem({
canvas: document.querySelector('#canvas'),
width: 750,
height: 1000
}),
new ImgSystem(),
new MaskSystem()
]
})
game.scene.transform.size = {
width: 750,
height: 1000
}
const image = new GameObject('image', {
size: { width: 200, height: 200 }
})
image.addComponent(
new Img({
resource: 'heart'
})
)
game.scene.addChild(image)
image.addComponent(
new Mask({
type: MASK_TYPE.Circle,
style: {
x: 100,
y: 100,
radius: 70
}
})
)
const image1 = new GameObject('image', {
size: { width: 200, height: 200 },
position: { x: 400, y: 300 }
})
image1.addComponent(
new Img({
resource: 'heart'
})
)
image1.addComponent(
new Mask({
type: MASK_TYPE.Img,
style: {
width: 100,
height: 100,
x: 20,
y: 20
},
resource: 'heart'
})
)
game.scene.addChild(image1)
const image2 = new GameObject('image', {
size: { width: 200, height: 200 },
position: { x: 100, y: 400 }
})
image2.addComponent(
new Img({
resource: 'heart'
})
)
image2.addComponent(
new Mask({
type: MASK_TYPE.Sprite,
style: {
width: 100,
height: 100,
x: 20,
y: 20
},
resource: 'tag',
spriteName: 'task.png'
})
)
game.scene.addChild(image2)
参数
type: MARK_TYPE
style: object
类型 | Type | 属性 |
---|---|---|
圆形 | MASK_TYPE.Circle | {style: {x,y,radius}} |
椭圆 | MASK_TYPE.Ellipse | {style:{x,y,width,height}} |
矩形 | MASK_TYPE.Rect | {style:{x,y,width,height}} |
圆角矩形 | MASK_TYPE.RoundedRect | {style:{x,y,width,height,radius}} |
多边形 | MASK_TYPE.Polygon | {style: {paths: [x,y,x,y,x,y]}} 或者 {style: {paths: [{x,y},{x,y},{x,y}]}} |
图片 | MASK_TYPE.Img | {resource,style:{x,y,width,height}} |
精灵图 | MASK_TYPE.Sprite | {resource,spriteName,style:{x,y,width,height}} |