Skip to main content

Spine skeletal animation

Spine is a 2D animation software tailored specifically for software and game developers. Animators, original artists, and engineers work together to give life to your game. Using Spine skeletal animation can achieve some richer effects, which can better reduce memory usage compared to sprite animation. Spine is a paid software, please use it after purchase, Spine official website: http://zh.esotericsoftware.com/. The currently supported Spine version is: 3.6 / 3.8 / 4.0, you can click here see how to set

-https://eva.js.org/playground/#/spine

Install

The currently supported Spine version is: 3.6 / 3.8 / 4.0, You can select npm package by version.

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

With NPM

npm i @eva/plugin-renderer @eva/plugin-renderer-spine40

In Browser

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

Usage

import {Game, GameObject, resource, RESOURCE_TYPE} from '@eva/eva.js'
import {RendererSystem} from '@eva/plugin-renderer'
import {Spine, SpineSystem} from '@eva/plugin-renderer-spine'

resource.addResource([
{
name:'anim',
type:'SPINE',
src: {
ske: {
type:'json',
url:'https://pages.tmall.com/wow/eva/b5fdf74313d5ff2609ab82f6b6fd83e6.json'
},
atlas: {
type:'atlas',
url:'https://pages.tmall.com/wow/eva/b8597f298a5d6fe47095d43ef03210d4.atlas'
},
image: {
type:'png',
url:'https://gw.alicdn.com/tfs/TB1YHC8Vxz1gK0jSZSgXXavwpXa-711-711.png'
}
}
}
])

const game = new Game({
systems: [
new RendererSystem({
canvas: document.querySelector('#canvas'),
width: 750,
height: 1000
}),
new SpineSystem()
],
autoStart: true,
frameRate: 60
})

game.scene.transform.size = {
width: 750,
height: 1000
}
const gameObject = new GameObject('spine', {
anchor: {
x: 0.5,
y: 0.5
},
scale: {
x: 0.5,
y: 0.5
}
})

const spine = new Spine({ resource:'anim', animationName:'idle' })

gameObject.addComponent(spine)
spine.on('complete', e => {
console.log('Animation playback ended', e.name)
})

spine.play('idle')
game.scene.addChild(gameObject)

Options

resource string

Resource Name

animationName string

Animation name

Methods

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

Play animation

-name action name -loop Whether to play in a loop

stop()

Stop play