Files
tower/ts/sequence_tile.ts

53 lines
1.3 KiB
TypeScript
Raw Normal View History

2021-05-12 04:48:16 +00:00
import { Tile } from './tile.js';
export class SequenceTile extends Tile {
constructor(width: number, height: number, tiles: Tile[], delay: number, repeat: boolean) {
super(width, height);
this.elem.style.position = 'relative';
const tile_chunk = 1 / tiles.length;
let animation = null;
for (let i = 0; i < tiles.length; i++) {
const tile = tiles[i];
this.elem.appendChild(tile.elem);
tile.elem.style.width = '100%';
tile.elem.style.height = '100%';
tile.elem.style.position = 'absolute';
tile.elem.style.top = '0';
tile.elem.style.left = '0';
tile.elem.style.zIndex = `${i}`;
tile.elem.style.opacity = '0.0';
animation = tile.elem.animate(
[
{
'offset': i * tile_chunk,
'easing': 'step-start',
'opacity': '0.0',
},
{
'offset': (i + 1) * tile_chunk,
'easing': 'step-start',
'opacity': '1.0',
},
],
{
'duration': delay * (tiles.length + 1),
'iterations': repeat ? Infinity : 1,
},
);
}
if (!repeat) {
animation!.finished.then(() => this.elem.remove());
}
}
play(_: string): Animation | undefined {
return undefined;
}
}