Spine 骨骼动画

      Spine 是一款专门为软件和游戏开发者量身打造的 2D 动画软件。动画师、原画师和工程师共同为您的游戏赋予生命。使用 Spine 骨骼动画可以实现一些更加丰富的效果,相对于帧动画能够更好的减少内存占用。Spine 是收费软件,请购买后使用,Spine 官网:http://zh.esotericsoftware.com/。目前支持 Spine 版本为:3.6 / 3.8 / 4.0,版本之间资源不兼容,可以在这里查看如何设置

      安装

      当前支持 spine 的 3.6 / 3.8 / 4.0 版本,可以根据版本选择不同npm包。

      • 3.6 @eva/plugin-renderer-spine
      • 3.8 @eva/plugin-renderer-spine38
      • 4.0 @eva/plugin-renderer-spine40

      使用 NPM

      1. npm i @eva/plugin-renderer @eva/plugin-renderer-spine

      在浏览器中

      1. <script src=https://unpkg.com/@eva/plugin-renderer-spine@1.2.x/dist/EVA.plugin.renderer.spine.min.js></script>

      使用

      1. import { Game, GameObject, resource, RESOURCE_TYPE } from ‘@eva/eva.js’
      2. import { RendererSystem } from ‘@eva/plugin-renderer’
      3. import { Spine, SpineSystem } from ‘@eva/plugin-renderer-spine’
      4. resource.addResource([
      5. {
      6. name: ‘anim’,
      7. type: ‘SPINE’,
      8. src: {
      9. ske: {
      10. type: ‘json’,
      11. url: https://pages.tmall.com/wow/eva/b5fdf74313d5ff2609ab82f6b6fd83e6.json
      12. },
      13. atlas: {
      14. type: ‘atlas’,
      15. url: https://pages.tmall.com/wow/eva/b8597f298a5d6fe47095d43ef03210d4.atlas
      16. },
      17. image: {
      18. type: ‘png’,
      19. url: https://gw.alicdn.com/tfs/TB1YHC8Vxz1gK0jSZSgXXavwpXa-711-711.png
      20. }
      21. }
      22. }
      23. ])
      24. const game = new Game({
      25. systems: [
      26. new RendererSystem({
      27. canvas: document.querySelector(‘#canvas’),
      28. width: 750,
      29. height: 1000
      30. }),
      31. new SpineSystem()
      32. ],
      33. autoStart: true,
      34. frameRate: 60
      35. })
      36. game.scene.transform.size = {
      37. width: 750,
      38. height: 1000
      39. }
      40. const gameObject = new GameObject(‘spine’, {
      41. anchor: {
      42. x: 0.5,
      43. y: 0.5
      44. },
      45. scale: {
      46. x: 0.5,
      47. y: 0.5
      48. }
      49. })
      50. const spine = new Spine({ resource: ‘anim’, animationName: ‘idle’ })
      51. gameObject.addComponent(spine)
      52. spine.on(‘complete’, e => {
      53. console.log(‘动画播放结束’, e.name)
      54. })
      55. spine.play(‘idle’)
      56. game.scene.addChild(gameObject)

      参数

      resource string

      资源名称

      animationName string

      动画名

      方法

      play(name?: string, loop?: boolean)

      播放动画

      • name 动作名
      • loop 是否循环播放

      stop()

      停止播放

      ,