js实现闯关式疯狂像素风格怪兽卡车驾驶操控游戏代码
代码语言:html
所属分类:游戏
代码描述:js实现闯关式疯狂像素风格怪兽卡车驾驶操控游戏代码
代码标签: js 闯关 疯狂 像素 风格 怪兽 卡车 驾驶 操控 游戏 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en-us">
<head>
<script src="//repo.bfw.wiki/bfwrepo/js/maddrive/index.wasm.js"></script>
<script src="//repo.bfw.wiki/bfwrepo/js/maddrive/index.data.js"></script>
<title>Drive Mad</title>
</head>
<body id="body">
<style>
@font-face {
font-family: 'baloo 2';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url(baloo2.woff) format('woff');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD
}
.fullscreen {
position: absolute;
width: 100%;
height: 100%
}
.center {
text-align: center
}
.centered {
margin-left: auto;
margin-right: auto;
display: block;
text-align: center
}
#play_overlay {
display: none;
z-index: 10
}
.middle {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%)
}
.middle_vertical {
position: absolute;
top: 50%;
transform: translate(0%, -50%)
}
.edge {
margin-left: auto;
margin-right: auto;
width: 164px;
height: 180px;
background-color: #cfdaed;
box-shadow: 5px 1px 5px rgba(0, 0, 0, .25);
transform: rotate(-5deg)
}
.box {
width: 164px;
height: 164px;
background-color: #fff;
position: relative
}
.black {
width: 132px;
height: 156px;
background-color: #000;
position: absolute;
top: 4px;
right: 4px;
margin: 0 auto
}
.cover {
width: 128px;
height: 128px;
margin: 2px
}
.title {
font-size: 14px;
font-family: 'baloo 2', ubuntu, verdana, sans-serif
}
.author {
font-family: 'baloo 2', ubuntu, verdana, sans-serif;
border-spacing: 0;
font-size: 14px;
color: #ccc;
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
position: absolute;
width: 150px;
top: 4px;
right: 142px;
transform-origin: right top;
transform: rotate(-90deg)
}
.loading {
margin-top: 20px;
margin-bottom: 10px
}
.description {
font-family: 'baloo 2', ubuntu, verdana, sans-serif;
display: inline-block;
font-size: 16px;
line-height: 1.2em;
width: 240px
}
.button {
display: inline-block;
border: 2px solid #00a2ff;
border-radius: 7px;
width: 133px;
height: 43px;
font-size: 16px;
line-height: 43px;
margin: 0 auto
}
.overlay_button {
display: inline-block;
border: 2px solid #000;
border-radius: 12px;
width: 200px;
height: 50px;
font-size: 18px;
line-height: 50px;
margin: 11px
}
#play_button {
color: #333;
background-color: #eee
}
.emscripten_border {
position: relative
}
#gradient {
background-image: linear-gradient(135deg, #70e1fd, #00a2ff);
position: absolute;
top: 0;
width: 100%;
height: 768px
}
* {
margin: 0;
padding: 0
}
p,
ul,
ol,
dl {
margin-bottom: 1em
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
dl {
margin-left: 16px;
margin-right: 16px
}
img {
vertical-align: top
}
html,
body {
font-family: 'baloo 2', ubuntu, verdana, sans-serif;
font-size: 18px;
color: #bbb;
padding: 0;
width: 100%;
height: 100%;
margin: 0;
border: 0;
line-height: 1.8;
overflow: hidden;
display: block
}
canvas {
padding-right: 0;
margin-left: auto;
margin-right: auto;
display: block;
margin-top: auto;
margin-bottom: auto;
position: relative;
width: 1024px;
height: 768px
}
div.emscripten {
text-align: center
}
canvas.emscripten {
border: 0;
background-color: #000
}
#status {
display: inline-block;
width: 100%;
font-weight: 700;
color: #787878;
text-align: center
}
#modal_parent {
display: none;
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: #000;
background-color: rgba(0, 0, 0, .4)
}
.modal_inner {
display: none
}
#play_content {
color: #fff;
z-index: 10
}
#modal_content {
position: relative;
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
box-sizing: border-box
}
.error_message {
color: red
}
.error_text {
color: red;
font-family: sans-serif;
font-size: .8em
}
#modal_close_button {
color: #aaa;
position: absolute;
right: 15px;
top: 10px;
font-size: 28px;
line-height: 28px;
font-weight: 700;
transition: .2s
}
#modal_close_button:hover,
#modal_close_button:focus {
color: #000;
text-decoration: none;
cursor: pointer
}
a:link {
color: #00b9fe;
text-decoration: none;
transition: .2s
}
a:visited {
color: #00b9fe
}
a:hover,
a:active {
opacity: .5
}
.link_image_button {
margin-right: 10px
}
.playstore075 {
width: 153px;
height: 45px
}
.appstore075 {
width: 135px;
height: 45px
}
#progress_or_play {
margin-top: 10px
}
#terms_p {
font-family: sans-serif;
color: #141414;
font-size: .7em;
margin-bottom: 0
}
#terms_p a {
color: #f0f0f0
}
.deeplink_message {
font-size: 1em;
color: #f0f0f0;
line-height: 1.1em;
font-size: 20px
}
.menu {
color: #f0f0f0
}
.level_button {
border: 2px solid #222;
border-radius: 1em;
color: #f0f0f0;
background-color: #00a2ff;
line-height: 1em;
height: 2.5em;
width: 5em;
justify-self: center;
position: relative;
padding-top: .6em
}
.grid_element_center {
justify-self: center
}
.level_button_name {
font-size: .6em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.level_button_number {
font-size: 1.2em
}
.level_button:hover {
background-color: #00c2ff
}
.level_checkmark {
position: absolute;
right: 0;
top: 0;
margin: 0;
padding: 0;
text-align: right;
font-size: 1.2em;
line-height: 1.2em
}
.level_button a {
color: #f0f0f0;
opacity: 1
}
.menu_items {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
margin-bottom: 20px
}
.menu_header {
font-size: 3em;
margin-top: 40px
}
#webview_content {
display: none;
background-color: transparent;
position: absolute;
top: 0;
width: 100%;
height: 768px
}
.webview {
width: 100%;
height: 100%;
background: 0 0;
margin: 0;
border: 0;
overflow: hidden
}
</style>
<div id="modal_parent">
<div id="modal_content">
<span id="modal_close_button">×</span>
<div id="store_link_modal_content" class="modal_inner"></div>
<div id="share_file_modal_content" class="modal_inner"></div>
</div>
</div>
<div id="canvas_border" class="emscripten_border">
<div id="play_content" class="middle center">
<div class="edge">
<div class="box">
<div class="black">
<img src="//repo.bfw.wiki/bfwrepo/image/60505c91f2004.png" class="cover" />
<p class="title">Drive Mad</p>
<p class="author">Martin Magni</p>
</div>
</div>
</div>
<div id="progress_or_play"><progress id="progress" class="loading" value="0" max="100"></progress></div>
<p class="description"></p>
</div>
<canvas class="emscripten" id="canvas" tabindex="-1"></canvas>
<div id="gradient"></div>
<div id="webview_content"></div>
</div>
<script type="text/javascript">
var pokiDebug = false;
var postRunDone = false;
var theDomLoaded = false;
var pokiInited = false;
var gameReadyToStart = false;
var requestedCanvas = false;
var adblocker = false;
var gameStarted = false;
var updatedScreenSize = false;
var startupTimeStr = "";
var loadProgressFrac = 0;
var fakeProgressPercentStart = 80 + Math.random() * 15;
window.addEventListener('DOMContentLoaded', domContentLoaded);
window.addEventListener('load', function() {
console.log("Load event received");
if (inIframe()) {
document.addEventListener('click', ev => {
let canvas = document.getElementById('canvas');
if (canvas) {
canvas.focus();
}
});
}
});
function inIframe() {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
function updateLoadProgress() {
let progressElement = document.getElementById('progress');
if (progressElement) {
progressElement.value = Math.round(loadProgressFrac * fakeProgressPercentStart);
progressElement.max = 100;
}
if (loadProgressFrac >= 1) {
console.log("Loading done");
tryStartGame();
}
}
function domContentLoaded() {
initPokiSdk();
console.log("DOM content loaded event received");
let canvas = document.getElementById('canvas');
canvas.addEventListener("contextmenu", stopContextMenu);
if (!postRunDone) {
resizeCanvas(false);
}
window.addEventListener('blur', ev => setGameFocus(false));
window.addEventListener('focus', ev => setGameFocus(true));
canvas.onpointerdown = beginPointerDrag;
canvas.onpointerup = endPointerDrag;
theDomLoaded = true;
}
function beginPointerDrag(e) {
let canvas = document.getElementById('canvas');
canvas.setPointerCapture(e.pointerId);
}
function endPointerDrag(e) {
let canvas = document.getElementById('canvas');
canvas.releasePointerCapture(e.pointerId);
}
function setGameFocus(f) {
if (postRunDone) {
Module.ccall('set_game_focus', 'v', ['number'], [f]);
}
}
function canBeGameGuid(str) {
return str && str.match('([A-F]|[0-9]){16}');
}
function getMeta(metaName) {
const metas = document.getElementsByTagName('meta');
for (let i = 0; i < metas.length; i++) {
if (metas[i].getAttribute('name') === metaName) {
return metas[i].getAttribute('content');
}
}
return '';
}
function getCSSRgb(color) {
return `rgb(${Math.round(color[0])}, ${Math.round(color[1])}, ${Math.round(color[2])})`;
}
let lastGradientStyleStr = "";
let lastDeepLinkLoadFraction = 0;
function getGradientStr(frac) {
let fromColor = [frac * 0x70, frac * 0xe1, frac * 0xfd];
let toColor = [frac * 0x00, frac * 0xa2, frac * 0xff];
let str = `linear-gradient(135deg, ${getCSSRgb(fromColor)}, ${getCSSRgb(toColor)})`
return str;
}
function hideOverlayGradient() {
var gradient = document.getElementById('gradient');
gradient.style.display = "none";
}
var showedStartGameError = false;
function setPokiInited() {
pokiInited = true;
}
function initPokiSdk() {
setPokiInited();
}
function hideOverlay() {
var playContent = document.getElementById('play_content');
playContent.style.display = "none";
hideOverlayGradient();
}
function startGame() {
try {
console.log("Registering event listeners");
window.addEventListener("beforeunload", function(event) {
Module.ccall('app_terminate_if_necessary', 'v');
});
window.addEventListener("unload", function(event) {
Module.ccall('app_terminate_if_necessary', 'v');
});
document.addEventListener("visibilitychange", function() {
if (document.visibilityState === 'visible') {
Module.ccall('app_resume', 'v');
} else {
Module.ccall('app_pause', 'v');
}
});
console.log("Confirming accept in app");
try {
Module.ccall('user_accepted_and_clicked', 'v');
Module.ccall('set_is_mobile', 'v', ['number'], [matchMedia('(pointer:coarse)').matches]);
} catch (err4) {}
gameStarted = true;
if (!updatedScreenSize) {
resizeCanvas(true);
}
} catch (err) {
if (!showedStartGameError) {
let foundModuleAsm = false;
let additionalInfo = "";
try {
if (Module["asm"]) {
foundModuleAsm = true;
}
} catch (err2) {}
if (!foundModuleAsm) {
additionalInfo += "Could not find Module.asm";
}
console.log(`Error when starting game. Try to reload the page. Error message: ${err}. ${additionalInfo}`);
showedStartGameError = true;
}
}
}
var pokiStopped = true;
function pokiEnsureStop() {
if (!pokiStopped) {
pokiStopped = true;
}
}
function pokiEnsureStart() {
if (pokiStopped) {
pokiStopped = false;
}
}
var startGameAttempts = 0;
var tryStartGameTimeout = null;
function tryStartGame() {
console.log("tryStartGame()", gameReadyToStart);
if (gameReadyToStart) {
return;
}
if (!postRunDone || !theDomLoaded || !pokiInited) {
startGameAttempts++;
if (startGameAttempts == 20) {
return;
}
if (tryStartGameTimeout != null) {
clearTimeout(tryStartGameTimeout);
}
tryStartGameTimeout = setTimeout(tryStartGame, startGameAttempts * 100);
console.log("Not ready to start game yet...");
return;
}
gameReadyToStart = true;
console.log("Starting game");
startGame();
}
function simpleLogC(str) {
if (postRunDone) {
Module.ccall('log_simple', 'v', ['string'], [str]);
} else {
console.log(str);
}
}
function appErrorC(code, str) {
if (postRunDone) {
Module.ccall('app_error', 'v', ['number', 'string'], [code, str]);
} else {
console.error(str, code);
}
}
function simpleAppErrorC(str) {
appErrorC(1, str);
}
function parseUrlArgument(name) {
let result = "";
let str = window.location.search;
if (str.length > 0 && str[0] == '?') {
var arr = str.substr(1).split('&');
for (let i = 0; i < arr.length; i++) {
if (arr[i].startsWith(name + "=")) {
result = arr[i].substr(name.length + 1);
break;
}
}
}
return result;
}
function parseUrlArgumentInt(name) {
let str = parseUrlArgument(name);
let parsed = parseInt(str);
if (isNaN(parsed)) {
return 0;
} else {
return parsed;
}
}
function resizeCanvas(informC) {
let iw = window.innerWidth;
let ih = window.innerHeight;
let canvas = document.getElementById('canvas');
let border = document.getElementById('canvas_border');
canvas.width = iw * window.devicePixelRatio;
canvas.height = ih * window.devicePixelRatio;
border.style.marginTop = '0px';
let gradient = document.getElementById("gradient");
let webViewContent = document.getElementById("webview_content");
[gradient, webViewContent].forEach(e => {
if (e) {
e.style.left = '0px';
}
});
[canvas, gradient, webViewContent].forEach(e => {
if (e) {
e.style.width = iw + 'px';
e.style.height = ih + 'px';
e.style.borderRadius = '0px';
}
});
if (informC && gameStarted && requestedCanvas) {
Module.ccall("update_screen_size", "v", ["number", "number", "number"], [canvas.width, canvas.height, window.devicePixelRatio]);
updatedScreenSize = true;
}
}
function stopContextMenu(event) {
event.preventDefault();
return false;
}
var Module = {
locateFile: function(path, prefix) {
if (prefix == "") {
return "" + path;
}
return prefix + path;
},
preRun: [function() {
console.log("preRun() called");
}],
postRun: [function() {
console.log("postRun() called");
document.onfullscreenchange = function() {
setTimeout(function() {
resizeCanvas(true);
if (document.fullscreenElement && gameStarted && requestedCanvas) {
let canvas = document.getElementById('canvas');
Module.ccall("update_screen_size", "v", ["number", "number", "number"], [canvas.width, canvas.height, 1]);
}
}, 500);
};
window.addEventListener('resize', (event) => resizeCanvas(true), false);
if (theDomLoaded) {
resizeCanvas(true);
}
console.log("Registering keydown listener");
window.addEventListener('keydown', e => {
ccall("keydown_browser", "v", ["string"], [e.key]);
});
postRunDone = true;
}],
print: (function() {
return function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
console.log(text);
};
})(),
printErr: function(text) {
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
console.error(text);
},
canvas: (function() {
var canvas = document.getElementById('canvas');
canvas.addEventListener("webglcontextlost", function(e) {
alert('WebGL context lost. You will need to reload the page.');
e.preventDefault();
}, false);
requestedCanvas = true;
return canvas;
})(),
setStatus: function(text) {
if (!Module.setStatus.last) Module.setStatus.last = {
time: Date.now(),
text: ''
};
if (text === Module.setStatus.last.text) return;
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
var now = Date.now();
if (m && now - Module.setStatus.last.time < 30) return;
Module.setStatus.last.time = now;
Module.setStatus.last.text = text;
if (m) {
text = m[1];
loadProgressFrac = parseInt(m[2]) / parseInt(m[4]);
} else {
loadProgressFrac = 1;
}
updateLoadProgress();
},
totalDependencies: 0,
monitorRunDependencies: function(left) {
this.totalDependencies = Math.max(this.totalDependencies, left);
}
};
var notifications = [];
var webViewIframe = null;
var storedScripts = [];
var webviewDomLoaded = false;
async function isUrlFound(url) {
try {
const response = await fetch(url, {
method: 'HEAD',
cache: 'no-cache'
});
return response.status === 200;
} catch (error) {
return false;
}
}
function checkHintFileExist(src, li) {
isUrlFound(src).then(found => {
if (found) {
Module.ccall("hint_file_exists", "v", ["number"], [li]);
}
});
}
function postStored() {
for (var i = 0; i < storedScripts.length; i++) {
webViewIframe.contentWindow.postMessage("eval:" + storedScripts[i], '*');
}
storedScripts = [];
}
function onWebviewDomContentLoaded() {
webviewDomLoaded = true;
postStored();
}
function webViewPostMessage(message) {
Module.ccall("app_webview_message", "v", ["string"], [message]);
}
function webViewError(type, message) {
webViewPostMessage(`error|${type}|${message}`);
}
function webViewClose() {
try {
var content = document.getElementById("webview_content");
content.style.display = 'none';
if (content.contains(webViewIframe)) {
webviewDomLoaded = false;
webViewIframe.contentWindow.removeEventListener('DOMContentLoaded', onWebviewDomContentLoaded);
content.removeChild(webViewIframe);
}
setTimeout(function() {
Module.ccall("set_game_focus", "v", ["number"], [true])
}, 100);
} catch (err) {
webViewError("unknown", err);
}
}
function webViewOpen(path) {
try {
let arr = readLocalFile(path);
let html = new TextDecoder("utf-8").decode(arr);
if (webViewIframe == null) {
window.onmessage = function(e) {
webViewPostMessage(e.data);
}
}
html = html.replace("common.js", `webapp/view_common.js`);
html = html.replace("common.css", `webapp/view_common.css`);
var content = document.getElementById("webview_content");
content.style.display = 'block';
webViewIframe = document.createElement('iframe');
webViewIframe.classList.add('webview');
webViewIframe.allowtransparency = true;
content.appendChild(webViewIframe);
webViewIframe.contentWindow.document.open();
webviewDomLoaded = false;
webViewIframe.contentWindow.addEventListener('DOMContentLoaded', onWebviewDomContentLoaded);
webViewIframe.contentWindow.document.write(html);
webViewIframe.contentWindow.document.close();
} catch (err) {
webViewError("unknown", err);
}
}
function webViewExecuteJS(jsString) {
try {
if (!webviewDomLoaded) {
storedScripts.push(jsString);
} else {
webViewIframe.contentWindow.postMessage("eval:" + jsString, '*');
}
} catch (err) {
webViewError("unknown", err);
}
}
function getHostname() {
let hostname = window.location.hostname.split(':')[0];
let lengthBytes = lengthBytesUTF8(hostname) + 1;
let stringOnWasmHeap = _malloc(lengthBytes);
stringToUTF8(hostname, stringOnWasmHeap, lengthBytes);
return stringOnWasmHeap;
}
function parseUrlArgumentString(name) {
let str = parseUrlArgument(name);
let lengthBytes = lengthBytesUTF8(str) + 1;
let stringOnWasmHeap = _malloc(lengthBytes);
stringToUTF8(str, stringOnWasmHeap, lengthBytes);
return stringOnWasmHeap;
}
function writeLocalFile(buffer, pathDevice) {
let arr = new Uint8Array(buffer);
let stream = FS.open(pathDevice, 'w');
FS.write(stream, arr, 0, arr.length, 0);
FS.close(stream);
}
function readLocalFile(path) {
let stream = FS.open(path, 'r');
FS.llseek(stream, 0, 2);
let fileSize = stream.position;
FS.llseek(stream, 0, 0);
let buf = new Uint8Array(fileSize);
FS.read(stream, buf, 0, fileSize, 0);
FS.close(stream);
return buf;
}
function resizeModal(modal, modalContent, maxWidth) {
let iw = window.innerWidth;
let ih = window.innerHeight;
let top = Math.min(0.15 * ih, 100);
let w = Math.min(iw, maxWidth);
modal.style.display = "block";
modalContent.style.width = w + "px";
modal.style.paddingTop = top + "px";
return w;
}
function fetchUrl(url, id, useToken) {}
function adInit() {
setTimeout(() => Module.ccall("ad_on_inited", "v"), 100);
}
function firebasePause() {}
function firebaseResume() {}
function adInterstitialLoad() {
setTimeout(() => Module.ccall("ad_interstitial_on_loaded", "v", ["number"], [1]), 100);
}
function adInterstitialShow() {
Module.ccall("ad_interstitial_on_showed", "v", ["number"], [1]);
}
function adRewardedLoad() {
setTimeout(() => Module.ccall("ad_rewarded_on_loaded", "v", ["number"], [1]), 100);
}
function adRewardedShow() {
pokiEnsureStop();
Module.ccall("ad_rewarded_on_reward", "v");
Module.ccall("ad_rewarded_on_showed", "v", ["number"], [true]);
}
function firebaseDeinit() {}
function currentTimeSecondsRound() {
return Math.round(Date.now() / 1000);
}
</script>
<script type="text/javascript">
var Module = typeof Module != "undefined" ? Module : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0
}
Module.expectedDataFileDownloads++;
(function() {
if (Module["ENVIRONMENT_IS_PTHREAD"]) return;
var loadPackage = function(metadata) {
var PACKAGE_PATH = "";
if (typeof window === "object") {
PACKAGE_PATH = window["encodeURIComponent"](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/")
} else if (typeof process === "undefined" && typeof location !== "undefined") {
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/")
}
var PACKAGE_NAME = "index.data";
var REMOTE_PACKAGE_BASE = "index.data";
if (typeof Module["locateFilePackage"] === "function" && !Module["locateFile"]) {
Module["locateFile"] = Module["locateFilePackage"];
err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")
}
var REMOTE_PACKAGE_NAME = Module["locateFile"] ? Module["locateFile"](REMOTE_PACKAGE_BASE, "") : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata["remote_package_size"];
function fetchRemotePackage(packageName, packageSize, callback, errback) {
if (typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string") {
require("fs").readFile(packageName, function(err, contents) {
if (err) {
errback(err)
} else {
callback(contents.buffer)
}
});
return
}
var xhr = new XMLHttpRequest;
xhr.open("GET", window["index.data"], true);
xhr.responseType = "arraybuffer";
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
}
} else {
Module.dataFileDownloads[url].loaded = event.loaded
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++
}
total = Math.ceil(total * Module.expectedDataFileDownloads / num);
if (Module["setStatus"]) Module["setStatus"]("Downloading data... (" + loaded + "/" + total + ")")
} else if (!Module.dataFileDownloads) {
if (Module["setStatus"]) Module["setStatus"]("Downloading data...")
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName)
};
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || xhr.status == 0 && xhr.response) {
var packageData = xhr.response;
callback(packageData)
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL)
}
};
xhr.send(null)
}
function handleError(error) {
console.error("package error:", error)
}
var fetchedCallback = null;
var fetched = Module["getPreloadedPackage"] ? Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null
} else {
fetched = data
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + (new Error).stack
}
Module["FS_createPath"]("/", "assets", true, true);
Module["FS_createPath"]("/assets", "blocks", true, true);
Module["FS_createPath"]("/assets", "views", true, true);
Module["FS_createPath"]("/assets", "games", true, true);
Module["FS_createPath"]("/assets", "sounds", true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module["addRunDependency"]("fp " + this.name)
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray)
},
finish: function(byteArray) {
var that = this;
Module["FS_createDataFile"](this.name, null, byteArray, true, true, true);
Module["removeRunDependency"]("fp " + that.name);
this.requests[this.name] = null
}
};
var files = metadata["files"];
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i]["start"], files[i]["end"], files[i]["audio"] || 0).open("GET", files[i]["filename"])
}
function processPackageData(arrayBuffer) {
assert(arrayBuffer, "Loading data file failed.");
assert(arrayBuffer instanceof ArrayBuffer, "bad input to processPackageData");
var byteArray = new Uint8Array(arrayBuffer);
DataRequest.prototype.byteArray = byteArray;
var files = metadata["files"];
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload()
}
Module["removeRunDependency"]("datafile_index.data")
}
Module["addRunDependency"]("datafile_index.data");
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {
fromCache: false
};
if (fetched) {
processPackageData(fetched);
fetched = null
} else {
fetchedCallback = processPackageData
}
}
if (Module["calledRun"]) {
runWithFS()
} else {
if (!Module["preRun"]) Module["preRun"] = [];
Module["preRun"].push(runWithFS)
}
};
loadPackage({
"files": [{
"filename": "/assets/blocks/ACCELEROMETER_V",
"start": 0,
"end": 313
}, {
"filename": "/assets/blocks/ARCH",
"start": 313,
"end": 490
}, {
"filename": "/assets/blocks/BALL",
"start": 490,
"end": 635
}, {
"filename": "/assets/blocks/BOX",
"start": 635,
"end": 850
}, {
"filename": "/assets/blocks/BRICKS",
"start": 850,
"end": 1033
}, {
"filename": "/assets/blocks/BUTTERFLY",
"start": 1033,
"end": 2330
}, {
"filename": "/assets/blocks/BUTTON",
"start": 2330,
"end": 2853
}, {
"filename": "/assets/blocks/BUTTON_B",
"start": 2853,
"end": 3738
}, {
"filename": "/assets/blocks/CAMERA_ORBIT",
"start": 3738,
"end": 5126
}, {
"filename": "/assets/blocks/COMMENT",
"start": 5126,
"end": 5240
}, {
"filename": "/assets/blocks/CpF_LIST_ELEMENT_Cp",
"start": 5240,
"end": 5606
}, {
"filename": "/assets/blocks/DASH_CAT",
"start": 5606,
"end": 7471
}, {
"filename": "/assets/blocks/DINO",
"start": 7471,
"end": 12090
}, {
"filename": "/assets/blocks/DINO_RED",
"start": 12090,
"end": 13825
}, {
"filename": "/assets/blocks/DIRT",
"start": 13825,
"end": 13918
}, {
"filename": "/assets/blocks/DIRT_B",
"start": 13918,
"end": 14097
}, {
"filename": "/assets/blocks/DIRT_SLAB",
"start": 14097,
"end": 14219
}, {
"filename": "/assets/blocks/ECpC_SET_VAR_E",
"start": 14219,
"end": 14596
}, {
"filename": "/assets/blocks/ECVV_SET_ANG_LIMITS_E",
"start": 14596,
"end": 15053
}, {
"filename": "/assets/blocks/ECVV_SET_ANG_MOTOR_E",
"start": 15053,
"end": 15508
}, {
"filename": "/assets/blocks/ECVV_SET_ANG_SPRING_E",
"start": 15508,
"end": 15963
}, {
"filename": "/assets/blocks/ECVV_SET_LIN_LIMITS_E",
"start": 15963,
"end": 16418
}, {
"filename": "/assets/blocks/ECVV_SET_LIN_MOTOR_E",
"start": 16418,
"end": 16874
}, {
"filename": "/assets/blocks/ECVV_SET_LIN_SPRING_E",
"start": 16874,
"end": 17324
}, {
"filename": "/assets/blocks/EC_SET_VAR_E",
"start": 17324,
"end": 17579
}, {
"filename": "/assets/blocks/EFFF_VOLUME_PITCH_E",
"start": 17579,
"end": 18022
}, {
"filename": "/assets/blocks/EFF_LOOP_EFE",
"start": 18022,
"end": 18392
}, {
"filename": "/assets/blocks/EFF_SET_SCORE_E",
"start": 18392,
"end": 18776
}, {
"filename": "/assets/blocks/EFF_SFX_PLAY_FE",
"start": 18776,
"end": 19158
}, {
"filename": "/assets/blocks/EFpF_SET_VAR_E",
"start": 19158,
"end": 19532
}, {
"filename": "/assets/blocks/EFpO_MENU_ITEM_E",
"start": 19532,
"end": 19904
}, {
"filename": "/assets/blocks/EFp_DEC_VAR_E",
"start": 19904,
"end": 20170
}, {
"filename": "/assets/blocks/EFp_INC_VAR_E",
"start": 20170,
"end": 20442
}, {
"filename": "/assets/blocks/EF_INSPECT_E",
"start": 20442,
"end": 20791
}, {
"filename": "/assets/blocks/EF_RANDOM_SEED_E",
"start": 20791,
"end": 21179
}, {
"filename": "/assets/blocks/EF_SET_VAR_E",
"start": 21179,
"end": 21430
}, {
"filename": "/assets/blocks/EF_SFX_STOP_E",
"start": 21430,
"end": 21806
}, {
"filename": "/assets/blocks/EOF_SET_BOUNCE_E",
"start": 21806,
"end": 22198
}, {
"filename": "/assets/blocks/EOF_SET_FRICTION_E",
"start": 22198,
"end": 22594
}, {
"filename": "/assets/blocks/EOF_SET_MASS_E",
"start": 22594,
"end": 22977
}, {
"filename": "/assets/blocks/EOOV_ADD_CONSTRAINT_EC",
"start": 22977,
"end": 23428
}, {
"filename": "/assets/blocks/EOpO_SET_VAR_E",
"start": 23428,
"end": 23802
}, {
"filename": "/assets/blocks/EOT_SET_VISIBLE_E",
"start": 23802,
"end": 24180
}, {
"filename": "/assets/blocks/EOVQ_SET_POS_E",
"start": 24180,
"end": 24642
}, {
"filename": "/assets/blocks/EOVVV_ADD_FORCE_E",
"start": 24642,
"end": 25155
}, {
"filename": "/assets/blocks/EOVV_SET_LOCKED_E",
"start": 25155,
"end": 25617
}, {
"filename": "/assets/blocks/EOVV_SET_VEL_E",
"start": 25617,
"end": 26075
}, {
"filename": "/assets/blocks/EO_COLLISION_EOFVE",
"start": 26075,
"end": 26596
}, {
"filename": "/assets/blocks/EO_CREATE_EO",
"start": 26596,
"end": 26972
}, {
"filename": "/assets/blocks/EO_DESTROY_E",
"start": 26972,
"end": 27349
}, {
"filename": "/assets/blocks/EO_INSPECT_E",
"start": 27349,
"end": 27697
}, {
"filename": "/assets/blocks/EO_SET_VAR_E",
"start": 27697,
"end": 27948
}, {
"filename": "/assets/blocks/EQpQ_SET_VAR_E",
"start": 27948,
"end": 28324
}, {
"filename": "/assets/blocks/EQ_INSPECT_E",
"start": 28324,
"end": 28675
}, {
"filename": "/assets/blocks/EQ_SET_VAR_E",
"start": 28675,
"end": 28928
}, {
"filename": "/assets/blocks/ETpT_SET_VAR_E",
"start": 28928,
"end": 29302
}, {
"filename": "/assets/blocks/ET_IF_EEE",
"start": 29302,
"end": 29666
}, {
"filename": "/assets/blocks/ET_INSPECT_E",
"start": 29666,
"end": 30015
}, {
"filename": "/assets/blocks/ET_SET_VAR_E",
"start": 30015,
"end": 30265
}, {
"filename": "/assets/blocks/EVpV_SET_VAR_E",
"start": 30265,
"end": 30640
}, {
"filename": "/assets/blocks/EVQF_SET_CAM_E",
"start": 30640,
"end": 31090
}, {
"filename": "/assets/blocks/EVQ_SET_LIT_E",
"start": 31090,
"end": 31487
}, {
"filename": "/assets/blocks/EV_INSPECT_E",
"start": 31487,
"end": 31835
}, {
"filename": "/assets/blocks/EV_SET_GRAVITY_E",
"start": 31835,
"end": 32214
}, {
"filename": "/assets/blocks/EV_SET_VAR_E",
"start": 32214,
"end": 32466
}, {
"filename": "/assets/blocks/E_BUT_SENSOR_EE",
"start": 32466,
"end": 32836
}, {
"filename": "/assets/blocks/E_JOY_SENSOR_VE",
"start": 32836,
"end": 33198
}, {
"filename": "/assets/blocks/E_LATE_UPDATE_EE",
"start": 33198,
"end": 33563
}, {
"filename": "/assets/blocks/E_LOSE_E",
"start": 33563,
"end": 33936
}, {
"filename": "/assets/blocks/E_PLAY_EE",
"start": 33936,
"end": 34298
}, {
"filename": "/assets/blocks/E_SCREENSHOT_EE",
"start": 34298,
"end": 34687
}, {
"filename": "/assets/blocks/E_SWIPE_EVE",
"start": 34687,
"end": 35059
}, {
"filename": "/assets/blocks/E_TOUCH_EFFE",
"start": 35059,
"end": 35494
}, {
"filename": "/assets/blocks/E_WIN_E",
"start": 35494,
"end": 35871
}, {
"filename": "/assets/blocks/FALSE_T",
"start": 35871,
"end": 36118
}, {
"filename": "/assets/blocks/FFF_EULER_Q",
"start": 36118,
"end": 36507
}, {
"filename": "/assets/blocks/FFF_JOIN_V",
"start": 36507,
"end": 36894
}, {
"filename": "/assets/blocks/FF_ADD_F",
"start": 36894,
"end": 37193
}, {
"filename": "/assets/blocks/FF_DIV_F",
"start": 37193,
"end": 37487
}, {
"filename": "/assets/blocks/FF_EQL_T",
"start": 37487,
"end": 37788
}, {
"filename": "/assets/blocks/FF_GT_T",
"start": 37788,
"end": 38097
}, {
"filename": "/assets/blocks/FF_LOG_F",
"start": 38097,
"end": 38413
}, {
"filename": "/assets/blocks/FF_LT_T",
"start": 38413,
"end": 38720
}, {
"filename": "/assets/blocks/FF_MAX_F",
"start": 38720,
"end": 39025
}, {
"filename": "/assets/blocks/FF_MIN_F",
"start": 39025,
"end": 39331
}, {
"filename": "/assets/blocks/FF_MOD_F",
"start": 39331,
"end": 39625
}, {
"filename": "/assets/blocks/FF_MUL_F",
"start": 39625,
"end": 39930
}, {
"filename": "/assets/blocks/FF_POW_F",
"start": 39930,
"end": 40229
}, {
"filename": "/assets/blocks/FF_RANDOM_F",
"start": 40229,
"end": 40545
}, {
"filename": "/assets/blocks/FF_S2W_VV",
"start": 40545,
"end": 40876
}, {
"filename": "/assets/blocks/FF_SUB_F",
"start": 40876,
"end": 41174
}, {
"filename": "/assets/blocks/FLOWERS",
"start": 41174,
"end": 41311
}, {
"filename": "/assets/blocks/FOLDER_EMPTY",
"start": 41311,
"end": 41451
}, {
"filename": "/assets/blocks/FOLDER_LOCKED",
"start": 41451,
"end": 41644
}, {
"filename": "/assets/blocks/FOLDER_UNKNOWN",
"start": 41644,
"end": 41809
}, {
"filename": "/assets/blocks/FOLIAGE",
"start": 41809,
"end": 41901
}, {
"filename": "/assets/blocks/FOLIAGE_B",
"start": 41901,
"end": 42076
}, {
"filename": "/assets/blocks/FOLIAGE_BOT",
"start": 42076,
"end": 42209
}, {
"filename": "/assets/blocks/FOLIAGE_SLAB",
"start": 42209,
"end": 42370
}, {
"filename": "/assets/blocks/FOLIAGE_TOP",
"start": 42370,
"end": 42499
}, {
"filename": "/assets/blocks/FpF_LIST_ELEMENT_Fp",
"start": 42499,
"end": 42861
}, {
"filename": "/assets/blocks/FRAME_F",
"start": 42861,
"end": 43071
}, {
"filename": "/assets/blocks/F_ABS_F",
"start": 43071,
"end": 43288
}, {
"filename": "/assets/blocks/F_CEIL_F",
"start": 43288,
"end": 43506
}, {
"filename": "/assets/blocks/F_COS_F",
"start": 43506,
"end": 43724
}, {
"filename": "/assets/blocks/F_FLOOR_F",
"start": 43724,
"end": 43945
}, {
"filename": "/assets/blocks/F_NEG_F",
"start": 43945,
"end": 44158
}, {
"filename": "/assets/blocks/F_ROUND_F",
"start": 44158,
"end": 44378
}, {
"filename": "/assets/blocks/F_SIN_F",
"start": 44378,
"end": 44600
}, {
"filename": "/assets/blocks/GOAL",
"start": 44600,
"end": 45039
}, {
"filename": "/assets/blocks/GRASS_A",
"start": 45039,
"end": 45182
}, {
"filename": "/assets/blocks/GRASS_B",
"start": 45182,
"end": 45344
}, {
"filename": "/assets/blocks/L2R",
"start": 45344,
"end": 45452
}, {
"filename": "/assets/blocks/MARKER",
"start": 45452,
"end": 45565
}, {
"filename": "/assets/blocks/MOTOR_X",
"start": 45565,
"end": 46196
}, {
"filename": "/assets/blocks/MOTOR_Y",
"start": 46196,
"end": 47053
}, {
"filename": "/assets/blocks/MOTOR_Z",
"start": 47053,
"end": 47710
}, {
"filename": "/assets/blocks/MULTI_IN",
"start": 47710,
"end": 47819
}, {
"filename": "/assets/blocks/MULTI_IN_E",
"start": 47819,
"end": 47932
}, {
"filename": "/assets/blocks/MULTI_OUT",
"start": 47932,
"end": 48044
}, {
"filename": "/assets/blocks/MULTI_OUT_E",
"start": 48044,
"end": 48159
}, {
"filename": "/assets/blocks/NONE",
"start": 48159,
"end": 48369
}, {
"filename": "/assets/blocks/NUMBER_F",
"start": 48369,
"end": 48618
}, {
"filename": "/assets/blocks/OBSTACLE",
"start": 48618,
"end": 48746
}, {
"filename": "/assets/blocks/OO_EQL_T",
"start": 48746,
"end": 49049
}, {
"filename": "/assets/blocks/OpF_LIST_ELEMENT_Op",
"start": 49049,
"end": 49410
}, {
"filename": "/assets/blocks/O_GET_POS_VQ",
"start": 49410,
"end": 49744
}, {
"filename": "/assets/blocks/O_GET_SIZE_VV",
"start": 49744,
"end": 50068
}, {
"filename": "/assets/blocks/O_GET_VEL_VV",
"start": 50068,
"end": 50400
}, {
"filename": "/assets/blocks/PARTICLE",
"start": 50400,
"end": 50512
}, {
"filename": "/assets/blocks/PASS_THROUGH",
"start": 50512,
"end": 50636
}, {
"filename": "/assets/blocks/QpF_LIST_ELEMENT_Qp",
"start": 50636,
"end": 51e3
}, {
"filename": "/assets/blocks/QQF_LERP_Q",
"start": 51e3,
"end": 51389
}, {
"filename": "/assets/blocks/QQ_MUL_Q",
"start": 51389,
"end": 51692
}, {
"filename": "/assets/blocks/QUATERNION_Q",
"start": 51692,
"end": 52037
}, {
"filename": "/assets/blocks/Q_EULER_FFF",
"start": 52037,
"end": 52426
}, {
"filename": "/assets/blocks/Q_INV_Q",
"start": 52426,
"end": 52641
}, {
"filename": "/assets/blocks/SCREEN_SIZE_FF",
"start": 52641,
"end": 52956
}, {
"filename": "/assets/blocks/SCRIPT",
"start": 52956,
"end": 53102
}, {
"filename": "/assets/blocks/SFX_Fp",
"start": 53102,
"end": 53424
}, {
"filename": "/assets/blocks/SHRUB",
"start": 53424,
"end": 53623
}, {
"filename": "/assets/blocks/SLATE",
"start": 53623,
"end": 53717
}, {
"filename": "/assets/blocks/SLATE_B",
"start": 53717,
"end": 53922
}, {
"filename": "/assets/blocks/SLATE_BOT",
"start": 53922,
"end": 54060
}, {
"filename": "/assets/blocks/SLATE_NE",
"start": 54060,
"end": 54173
}, {
"filename": "/assets/blocks/SLATE_NW",
"start": 54173,
"end": 54293
}, {
"filename": "/assets/blocks/SLATE_SE",
"start": 54293,
"end": 54409
}, {
"filename": "/assets/blocks/SLATE_SW",
"start": 54409,
"end": 54529
}, {
"filename": "/assets/blocks/SLATE_TOP",
"start": 54529,
"end": 54653
}, {
"filename": "/assets/blocks/SLIDER",
"start": 54653,
"end": 56555
}, {
"filename": "/assets/blocks/SLIDER_X",
"start": 56555,
"end": 56835
}, {
"filename": "/assets/blocks/SLIDER_Y",
"start": 56835,
"end": 57156
}, {
"filename": "/assets/blocks/SLIDER_Z",
"start": 57156,
"end": 57454
}, {
"filename": "/assets/blocks/SPHERE",
"start": 57454,
"end": 57594
}, {
"filename": "/assets/blocks/STEEL",
"start": 57594,
"end": 57734
}, {
"filename": "/assets/blocks/STICK_DE",
"start": 57734,
"end": 57885
}, {
"filename": "/assets/blocks/STICK_DN",
"start": 57885,
"end": 58037
}, {
"filename": "/assets/blocks/STICK_DS",
"start": 58037,
"end": 58194
}, {
"filename": "/assets/blocks/STICK_DW",
"start": 58194,
"end": 58352
}, {
"filename": "/assets/blocks/STICK_NE",
"start": 58352,
"end": 58506
}, {
"filename": "/assets/blocks/STICK_NW",
"start": 58506,
"end": 58669
}, {
"filename": "/assets/blocks/STICK_SE",
"start": 58669,
"end": 58826
}, {
"filename": "/assets/blocks/STICK_SW",
"start": 58826,
"end": 58986
}, {
"filename": "/assets/blocks/STICK_UE",
"start": 58986,
"end": 59140
}, {
"filename": "/assets/blocks/STICK_UN",
"start": 59140,
"end": 59310
}, {
"filename": "/assets/blocks/STICK_US",
"start": 59310,
"end": 59467
}, {
"filename": "/assets/blocks/STICK_UW",
"start": 59467,
"end": 59622
}, {
"filename": "/assets/blocks/STICK_X",
"start": 59622,
"end": 59764
}, {
"filename": "/assets/blocks/STICK_Y",
"start": 59764,
"end": 59913
}, {
"filename": "/assets/blocks/STICK_Z",
"start": 59913,
"end": 60051
}, {
"filename": "/assets/blocks/STONE",
"start": 60051,
"end": 60145
}, {
"filename": "/assets/blocks/STONE_B",
"start": 60145,
"end": 60322
}, {
"filename": "/assets/blocks/STONE_BLOCK",
"start": 60322,
"end": 60520
}, {
"filename": "/assets/blocks/STONE_BOT",
"start": 60520,
"end": 60658
}, {
"filename": "/assets/blocks/STONE_LOWER",
"start": 60658,
"end": 60799
}, {
"filename": "/assets/blocks/STONE_PILLAR",
"start": 60799,
"end": 60954
}, {
"filename": "/assets/blocks/STONE_SLAB",
"start": 60954,
"end": 61102
}, {
"filename": "/assets/blocks/STONE_TOP",
"start": 61102,
"end": 61227
}, {
"filename": "/assets/blocks/SWIPE_CHICK",
"start": 61227,
"end": 64004
}, {
"filename": "/assets/blocks/THIS_O",
"start": 64004,
"end": 64119
}, {
"filename": "/assets/blocks/TILT_BALL",
"start": 64119,
"end": 64366
}, {
"filename": "/assets/blocks/TpF_LIST_ELEMENT_Tp",
"start": 64366,
"end": 64728
}, {
"filename": "/assets/blocks/TRUE_T",
"start": 64728,
"end": 64974
}, {
"filename": "/assets/blocks/TT_AND_T",
"start": 64974,
"end": 65267
}, {
"filename": "/assets/blocks/TT_EQL_T",
"start": 65267,
"end": 65568
}, {
"filename": "/assets/blocks/TT_OR_T",
"start": 65568,
"end": 65859
}, {
"filename": "/assets/blocks/T_NOT_T",
"start": 65859,
"end": 66073
}, {
"filename": "/assets/blocks/VAR_Cp",
"start": 66073,
"end": 66326
}, {
"filename": "/assets/blocks/VAR_Fp",
"start": 66326,
"end": 66575
}, {
"filename": "/assets/blocks/VAR_Op",
"start": 66575,
"end": 66825
}, {
"filename": "/assets/blocks/VAR_Qp",
"start": 66825,
"end": 67077
}, {
"filename": "/assets/blocks/VAR_Tp",
"start": 67077,
"end": 67327
}, {
"filename": "/assets/blocks/VAR_Vp",
"start": 67327,
"end": 67577
}, {
"filename": "/assets/blocks/VECTOR_V",
"start": 67577,
"end": 67920
}, {
"filename": "/assets/blocks/VF_AXIS_ANG_Q",
"start": 67920,
"end": 68245
}, {
"filename": "/assets/blocks/VF_MUL_V",
"start": 68245,
"end": 68546
}, {
"filename": "/assets/blocks/VpF_LIST_ELEMENT_Vp",
"start": 68546,
"end": 68909
}, {
"filename": "/assets/blocks/VQ_MUL_V",
"start": 68909,
"end": 69211
}, {
"filename": "/assets/blocks/VVVV_LINE_VS_PLANE_V",
"start": 69211,
"end": 69656
}, {
"filename": "/assets/blocks/VV_ADD_V",
"start": 69656,
"end": 69955
}, {
"filename": "/assets/blocks/VV_CROSS_V",
"start": 69955,
"end": 70260
}, {
"filename": "/assets/blocks/VV_DIST_F",
"start".........完整代码请登录后点击上方下载按钮下载查看
















网友评论0