[build] added html5 task

This commit is contained in:
2018-01-09 22:22:03 +03:00
parent d3294a04f5
commit 729798bc25
9 changed files with 145 additions and 95 deletions

View File

@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Tank'z</title>
<% scripts.forEach(function(script) { %>
<script type="text/javascript" src="<%-script%>"></script>
<% }); %>
<style type="text/css">
html, body, #container {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
</head>
<body>
<div id="container"></div>
<script type="text/javascript">
new Swf(
document.getElementById('container'),
'<%-swf%>',
);
</script>
</body>
</html>

88
src/client/html/js/swf.js Normal file
View File

@@ -0,0 +1,88 @@
class Swf {
constructor(element, swf, options) {
this.id = Math.floor(Math.random() * 10000);
this.options = Object.assign({
quality: "high",
wMode: "opaque",
width: "100%",
height: "100%",
vars: {},
}, options);
this.element = element;
this.swf = swf;
this.data = {
params: {
id: this.id,
quality: this.options.quality,
allowScriptAccess: "always",
allowFullScreen: true,
wMode: this.options.wMode,
//base: base,
swLiveConnect: true
},
properties: {
name: this.id,
width: this.options.width,
height: this.options.height
},
vars: this.options.vars
};
this.swf = Swf.buildFlashElement(swf, this.data);
this.element.appendChild(this.swf);
}
static toFlashVars(object, base) {
var queryString = [];
for (var key in object) {
var value = object[key];
if (base) key = base + ":" + key;
var result;
switch (typeof value) {
case "object":
result = this.toFlashVars(value, key);
break;
case "array":
var qs = {};
value.each(function (val, i) {
qs[i] = val;
});
result = this.toFlashVars(qs, key);
break;
default:
result = key + "=" + encodeURIComponent(value);
}
if (value != null) queryString.push(result);
}
return queryString.join("&");
}
static buildFlashElement(path, options) {
var params = options.params;
var vars = options.vars;
var properties = options.properties;
params.flashVars = this.toFlashVars(vars);
var isIE = /*@cc_on!@*/false;
if (isIE) {
properties.classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
params.movie = path;
} else {
properties.type = "application/x-shockwave-flash";
}
properties.data = path;
var build = "<object id=\"" + params.id + "\"";
for (var property in properties) build += " " + property + "=\"" + properties[property] + "\"";
build += ">";
for (var param in params) {
if (params[param]) build += "<param name=\"" + param + "\" value=\"" + params[param] + "\" />";
}
build += "</object>";
var div = document.createElement("div");
div.innerHTML = build;
return div.firstChild;
}
}