avocado-old/packages/timing/animation-view.js
2020-06-21 11:22:10 -05:00

64 lines
1.1 KiB
JavaScript

import {
hasGraphics,
Container,
Image,
Renderable,
Sprite,
} from '@avocado/graphics';
export class AnimationView extends Renderable {
constructor(animation) {
super();
this.animation = animation;
this.container = new Container();
if (hasGraphics) {
if (this.animation.imageUri) {
Image.load(this.animation.imageUri).then((image) => {
this.sprite = new Sprite(image);
this.container.addChild(this.sprite);
this.resetSourceRectangle();
});
}
}
animation.on(
['directionChanged', 'indexChanged'],
this.onAnimationChanged,
this
);
}
destroy() {
this.animation.off(
['directionChanged', 'indexChanged'],
this.onAnimationChanged
);
if (this.sprite) {
this.sprite.destroy();
}
}
get internal() {
return this.container.internal;
}
onAnimationChanged() {
if (this.sprite) {
this.resetSourceRectangle();
}
}
reset() {
this.animation.reset();
}
resetSourceRectangle() {
this.sprite.sourceRectangle = this.animation.sourceRectangle;
}
tick() {
this.animation.tick();
}
}