ruffle/web/www/index.js

50 lines
1.4 KiB
JavaScript

import { Player } from "../pkg/fluster";
let fileInput = document.getElementById("file-input");
fileInput.addEventListener("change", fileSelected, false);
let remoteInput = document.getElementById("remote-input");
let loadRemoteButton = document.getElementById("load-remote-button");
loadRemoteButton.addEventListener("click", loadRemoteSwf, false);
let player;
function fileSelected() {
let file = fileInput.files[0];
if (file) {
let fileReader = new FileReader();
fileReader.onload = e => {
playSwf(fileReader.result);
}
fileReader.readAsArrayBuffer(file);
}
}
let timestamp = 0;
function loadRemoteSwf(swfData) {
fetch(remoteInput.value)
.then(response => {
response.arrayBuffer().then(data => playSwf(data))
});
}
function playSwf(swfData) {
//let audio = new AudioContext();
//audio.decodeAudioData(swfData).then(data => console.log("success"));
//return;
let canvas = document.getElementById("fluster-canvas");
if (swfData && canvas) {
console.log(swfData);
player = Player.new(canvas, new Uint8Array(swfData));
timestamp = performance.now();
window.requestAnimationFrame(tickPlayer);
}
}
function tickPlayer(newTimestamp) {
let dt = newTimestamp - timestamp;
player.tick(dt);
timestamp = newTimestamp;
window.requestAnimationFrame(tickPlayer);
}