avocado-old/packages/react/animation.coffee
2019-03-17 23:45:48 -05:00

52 lines
1017 B
CoffeeScript

import React from 'react'
import PropTypes from 'prop-types';
import {AnimationView, Ticker} from '@avocado/timing'
class AnimationComponent extends React.Component
@defaultProps:
animation: null
image: null
isTicking: true
constructor: (props) ->
super props
@animationView = new AnimationView()
@animationView.on [
'animationChanged'
'imageChanged'
'sourceRectangleChanged'
], @tickContainer
@ticker = new Ticker.OutOfBand()
@ticker.on 'tick', (elapsed) => @props.animation?.tick elapsed
componentWillUnmount: ->
@animationView.off [
'animationChanged'
'imageChanged'
'sourceRectangleChanged'
], @tickContainer
@ticker.off 'tick'
@ticker.stop()
render: ->
# Side-effects.
@animationView.setAnimation @props.animation
@animationView.setImage @props.image
@props.setIntoContainer @animationView
return null
tickContainer: => @props.tickContainer()
export default AnimationComponent