帧动画
帧动画是由多张连续的图片按照一定的时间间隔播放的动画,通常会将图片合并到一张图片里面,然后通过 JSON 来描述图片的位置以及播放的顺序。
Eva.js 的帧动画底层是 pixi.js spriteAnimation 实现的,因此在 Eva.js 中可以使用 spriteAnimation 支持的雪碧图生成工具导出的素材,比如 TexturePacker。
安装
使用 NPM
npm i @eva/plugin-renderer @eva/plugin-renderer-sprite-animation
在浏览器中
<script src="https://unpkg.com/@eva/plugin-renderer-sprite-animation@1.0.x/dist/EVA.plugin.renderer.spriteAnimation.min.js"></script>
使用
import { Game, GameObject, resource, RESOURCE_TYPE } from '@eva/eva.js'import { RendererSystem } from '@eva/plugin-renderer'import { SpriteAnimation, SpriteAnimationSystem } from '@eva/plugin-renderer-sprite-animation'resource.addResource([{name: 'fruit',type: RESOURCE_TYPE.SPRITE_ANIMATION,src: {image: {type: 'png',url: 'https://gw.alicdn.com/bao/uploaded/TB15pMkkrsTMeJjSszhXXcGCFXa-377-1070.png'},json: {type: 'json',url: 'https://gw.alicdn.com/mt/TB1qCvumsyYBuNkSnfoXXcWgVXa.json'}},preload: false}])const game = new Game({systems: [new RendererSystem({canvas: document.querySelector('#canvas'),width: 750,height: 1000}),new SpriteAnimationSystem()]})const cut = new GameObject('cut', {position: { x: 225, y: 400 },size: { width: 300, height: 200 },origin: { x: 0, y: 0 }})const frame = cut.addComponent(new SpriteAnimation({resource: 'fruit',speed: 100}))frame.play()game.scene.addChild(cut)
参数
resource string
资源名,需要通过 resource.addResource 预加载。
speed number
每张图片播放的间隔时间,单位 ms。
方法
play(times)
播放动画,默认自动播放。times 参数为播放次数,默认是无限次
stop()
停止播放。
