git auto update
This commit is contained in:
commit
ff6977c574
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/*.bat
|
||||||
|
/*.sh
|
BIN
assets/sprite-note-iceball.png
Normal file
BIN
assets/sprite-note-iceball.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
BIN
assets/sprite-note-meteor.png
Normal file
BIN
assets/sprite-note-meteor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
assets/sprite-player.png
Normal file
BIN
assets/sprite-player.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
14
css/main.css
Normal file
14
css/main.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
*{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
outline:none;
|
||||||
|
position:relative;
|
||||||
|
left:0;
|
||||||
|
top:0;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
width:100vw;
|
||||||
|
height:100vh;
|
||||||
|
overflow:hidden;
|
||||||
|
background-color:#000;
|
||||||
|
}
|
9
index.html
Normal file
9
index.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE html><html>
|
||||||
|
<head><meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" href="./css/main.css">
|
||||||
|
<script src="./js/0-fconsole.js"></script>
|
||||||
|
<script src="./js/0-jsloader.js"></script>
|
||||||
|
<script src="./js/0-jsloadentry.js"></script>
|
||||||
|
</head><body>
|
||||||
|
<div id="mainframe"><canvas id="stagecanvas"></canvas></div>
|
||||||
|
</body></html>
|
36
js/0-fconsole.js
Normal file
36
js/0-fconsole.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
//fconsole.js
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var do_loadfail=function(msg) {
|
||||||
|
var a=document.createElement("div");
|
||||||
|
a.style.textAlign="center";
|
||||||
|
a.style.display="inline-block";
|
||||||
|
a.style.position="absolute";
|
||||||
|
a.style.zIndex="999999";
|
||||||
|
a.style.margin="auto";
|
||||||
|
a.style.color="rgba("+0xff+","+0xff+","+0x00+",1)";
|
||||||
|
a.style.width="100%";
|
||||||
|
a.style.verticalAlign="middle";
|
||||||
|
a.style.outline="none";
|
||||||
|
a.style.top="20vh";
|
||||||
|
a.style.fontSize="20px";
|
||||||
|
a.style.lineHeight="25px";
|
||||||
|
a.style.whiteSpace="pre";
|
||||||
|
a.innerHTML="Fatal error: "+msg;
|
||||||
|
|
||||||
|
document.body.innerHTML="";
|
||||||
|
document.body.style.backgroundColor="rgba("+0x75+","+0x60+","+0x60+",1)";
|
||||||
|
document.body.appendChild(a);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.loadfail=function(msg) {
|
||||||
|
if(document.readyState=="complete") {
|
||||||
|
do_loadfail(msg);
|
||||||
|
} else {
|
||||||
|
window.addEventListener("load", function() {
|
||||||
|
do_loadfail(msg);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
19
js/0-jsloadentry.js
Normal file
19
js/0-jsloadentry.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
//jsloadentry.js
|
||||||
|
|
||||||
|
(async function() {
|
||||||
|
if(!(typeof scriptManager=="object"&&"loadjs" in scriptManager)) {
|
||||||
|
if(typeof loadfail=="function") {
|
||||||
|
loadfail("jsloadentry.js:scriptManager.loadjs is not defined");
|
||||||
|
} else {
|
||||||
|
window.alert("jsloadentry.js:scriptManager.loadjs is not defined");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scriptManager.loadjs("./js/libpolyfill.requestAnimationFrame.js");
|
||||||
|
scriptManager.loadjs("./js/libutil.js");
|
||||||
|
scriptManager.loadjs("./js/libcubicbezier.js");
|
||||||
|
scriptManager.loadjs("./js/libpixi_v891uni.min.js");
|
||||||
|
scriptManager.loadjs("./js/libtransition.js");
|
||||||
|
await scriptManager.waitAll();
|
||||||
|
})();
|
52
js/0-jsloader.js
Normal file
52
js/0-jsloader.js
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
//jsloader.js
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
var scriptManager= {};
|
||||||
|
scriptManager.loadingcount=0;
|
||||||
|
|
||||||
|
scriptManager.loadjs=async function(pth) {
|
||||||
|
var resolve;
|
||||||
|
var reject;
|
||||||
|
var ret=new Promise(function(s, r) {
|
||||||
|
resolve=s;
|
||||||
|
reject=r;
|
||||||
|
});
|
||||||
|
var sc=document.createElement("script");
|
||||||
|
sc.src=pth;
|
||||||
|
//sc.type="text/javascript";
|
||||||
|
if(document.readyState=="complete") {
|
||||||
|
document.body.appendChild(sc);
|
||||||
|
} else {
|
||||||
|
window.addEventListener("load", function() {
|
||||||
|
document.body.appendChild(sc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
sc.addEventListener(("readyState" in sc?"readystatechange":"load"), function() {
|
||||||
|
console.info("script "+pth+" loaded successfully.");
|
||||||
|
scriptManager.loadingcount--;
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
|
||||||
|
sc.addEventListener("error", function() {
|
||||||
|
window.loadfail("script "+pth+" load failed");
|
||||||
|
reject();
|
||||||
|
});
|
||||||
|
|
||||||
|
scriptManager.loadingcount++;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
scriptManager.isDone=function() {
|
||||||
|
return scriptManager.loadingcount==0;
|
||||||
|
};
|
||||||
|
|
||||||
|
scriptManager.waitAll=async function() {
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
window.scriptManager=scriptManager;
|
||||||
|
})();
|
20
js/js2min.bat
Normal file
20
js/js2min.bat
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
@echo off
|
||||||
|
if %1 == "" (
|
||||||
|
exit
|
||||||
|
)
|
||||||
|
cmd /c uglifyjs %1 -c -e -o temp.js
|
||||||
|
|
||||||
|
cmd /c uglifyjs temp.js -c -e -o %~n1.min%~x1
|
||||||
|
del /f /s /q temp.js
|
||||||
|
cmd /c uglifyjs %~n1.min%~x1 -c -e -o temp.js
|
||||||
|
del /f /s /q %~n1.min%~x1
|
||||||
|
cmd /c uglifyjs temp.js -c -e -o %~n1.min%~x1
|
||||||
|
del /f /s /q temp.js
|
||||||
|
cmd /c uglifyjs %~n1.min%~x1 -c -e -o temp.js
|
||||||
|
del /f /s /q %~n1.min%~x1
|
||||||
|
cmd /c uglifyjs temp.js -c -e -o %~n1.min%~x1
|
||||||
|
del /f /s /q temp.js
|
||||||
|
cmd /c uglifyjs %~n1.min%~x1 -c -e -o temp.js
|
||||||
|
del /f /s /q %~n1.min%~x1
|
||||||
|
cmd /c uglifyjs temp.js -c -e -o %~n1.min%~x1
|
||||||
|
del /f /s /q temp.js
|
1
js/libcubicbezier.js
Normal file
1
js/libcubicbezier.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
!function(){function r(r,n){return 1-3*n+3*r}function n(r,n){return 3*n-6*r}function t(t,u,e){return((r(u,e)*t+n(u,e))*t+3*u)*t}function u(t,u,e){return 3*r(u,e)*t*t+2*n(u,e)*t+3*u}function e(r){return r}function Bezier(r,n,f,i){if(!(0<=r&&r<=1&&0<=f&&f<=1))throw new Error("Bezier x value must be in [0, 1] range");if(r===n&&f===i)return e;for(var a=new(o?Float32Array:Array)(11),c=0;c<11;++c)a[c]=t(.1*c,r,f);return function(e){return 0===e||1===e?e:t(function(n){for(var i,c,e=0,o=1;10!==o&&a[o]<=n;++o)e+=.1;return.001<=(c=u(i=e+(n-a[--o])/(a[o+1]-a[o])*.1,r,f))?function(r,n,e,o){for(var i,f=0;f<4;++f){if(0===(i=u(n,e,o)))return n;n-=(t(n,e,o)-r)/i}return n}(n,i,r,f):0===c?i:function(r,n,u,e,o){for(var f,i,a=0;0<(f=t(i=n+(u-n)/2,e,o)-r)?u=i:n=i,1e-7<Math.abs(f)&&++a<10;);return i}(n,e,e+.1,r,f)}(e),n,i)}}var o="function"==typeof Float32Array;"object"==typeof exports&&"undefined"!=typeof module?module.exports={Bezier:Bezier}:"function"==typeof define&&define.amd?define([],Bezier):("undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window).Bezier=Bezier}();
|
911
js/libpixi_v891uni.min.js
vendored
Normal file
911
js/libpixi_v891uni.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
30
js/libpolyfill.requestAnimationFrame.js
Normal file
30
js/libpolyfill.requestAnimationFrame.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
// requestAnimationFrame polyfill by Erik Möller.
|
||||||
|
// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavic, Darius Bacon and Joan Alba Maldonado.
|
||||||
|
// Adapted from https://gist.github.com/paulirish/1579671 which derived from
|
||||||
|
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
||||||
|
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
|
||||||
|
// Added high resolution timing. This window.performance.now() polyfill can be used: https://gist.github.com/jalbam/cc805ac3cfe14004ecdf323159ecf40e
|
||||||
|
// MIT license
|
||||||
|
// Gist: https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0
|
||||||
|
(function() {
|
||||||
|
var vendors = ['webkit', 'moz', 'ms', 'o'], vp = null;
|
||||||
|
for (var x = 0; x < vendors.length && !window.requestAnimationFrame && !window.cancelAnimationFrame; x++)
|
||||||
|
{
|
||||||
|
vp = vendors[x];
|
||||||
|
window.requestAnimationFrame = window.requestAnimationFrame || window[vp + 'RequestAnimationFrame'];
|
||||||
|
window.cancelAnimationFrame = window.cancelAnimationFrame || window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];
|
||||||
|
}
|
||||||
|
if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) //iOS6 is buggy.
|
||||||
|
{
|
||||||
|
var lastTime = 0;
|
||||||
|
window.requestAnimationFrame = function(callback, element)
|
||||||
|
{
|
||||||
|
var now = window.performance.now();
|
||||||
|
var nextTime = Math.max(lastTime + 16, now); //First time will execute it immediately but barely noticeable and performance is gained.
|
||||||
|
return setTimeout(function() { callback(lastTime = nextTime); }, nextTime - now);
|
||||||
|
};
|
||||||
|
window.cancelAnimationFrame = clearTimeout;
|
||||||
|
}
|
||||||
|
}());
|
120
js/libtransition.js
Normal file
120
js/libtransition.js
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
(function() {
|
||||||
|
|
||||||
|
if(typeof libutil!="object") {
|
||||||
|
if(typeof loadfail=="function") {
|
||||||
|
loadfail("libtransition.js:object libutil(type of "+(typeof libutil)+") is not defined");
|
||||||
|
} else {
|
||||||
|
window.alert("libtransition.js:object libutil is not defined");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof Bezier!="function") {
|
||||||
|
if(typeof loadfail=="function") {
|
||||||
|
loadfail("libtransition.js:class Bezier(type of "+(typeof Bezier)+") is not defined");
|
||||||
|
} else {
|
||||||
|
window.alert("libtransition.js:class Bezier is not defined");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof requestAnimationFrame!="function") {
|
||||||
|
if(typeof loadfail=="function") {
|
||||||
|
loadfail("libtransition.js:function requestAnimationFrame(type of "+(typeof requestAnimationFrame)+") is not defined");
|
||||||
|
} else {
|
||||||
|
window.alert("libtransition.js:function requestAnimationFrame is not defined");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
|
||||||
|
static linear=new Bezier(0, 0, 1, 1);
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
// static fields (set by user)
|
||||||
|
this.obj = null;
|
||||||
|
this.key = null;
|
||||||
|
this.startval = 0.0;
|
||||||
|
this.endval = 0.0;
|
||||||
|
this.duration = 0;
|
||||||
|
this.animfunc = Transition.linear;
|
||||||
|
this.stoponend=true;
|
||||||
|
this.onend = null;
|
||||||
|
// dynamic fields (set by this program)
|
||||||
|
this.elapsed = 0;
|
||||||
|
this.carryover = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
this.stop();
|
||||||
|
transition_update_list.push(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
var index=-1;
|
||||||
|
do {
|
||||||
|
index = transition_update_list.indexOf(this);
|
||||||
|
if(index > -1) {
|
||||||
|
transition_update_list.splice(index, 1);
|
||||||
|
}
|
||||||
|
} while(index!=-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
update(et) {
|
||||||
|
if(window.EnableDebugMode) {
|
||||||
|
if(!(this.key in this.obj)) {
|
||||||
|
this.stop();
|
||||||
|
console.error("the key", this.key, "is not in the obj", this.obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(typeof this.animfunc!="function") {
|
||||||
|
this.stop();
|
||||||
|
console.error("(a instance of transition).animfunc is not a function");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!libutil.isNumber(et)) {
|
||||||
|
et=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// this.carryover is for this.onend() only, not for the animation itself
|
||||||
|
this.carryover=0;
|
||||||
|
this.elapsed+=et;
|
||||||
|
if(this.elapsed>=this.duration) {
|
||||||
|
this.carryover=this.elapsed-this.duration;
|
||||||
|
this.elapsed=this.duration;
|
||||||
|
this.obj[this.key]=this.endval;
|
||||||
|
if(this.onend!==null&&typeof this.onend=="function") {
|
||||||
|
try {
|
||||||
|
this.onend();
|
||||||
|
} catch(e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(this.stoponend) {
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.obj[this.key]=(this.endval-this.startval)*libutil.clamp(this.animfunc(this.elapsed/this.duration), 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var transition_update_list=[];
|
||||||
|
|
||||||
|
var ticker_lasttime=Date.now();
|
||||||
|
|
||||||
|
var run_ticker=function(ts) {
|
||||||
|
requestAnimationFrame(run_ticker);
|
||||||
|
var et = ts - ticker_lasttime;
|
||||||
|
ticker_lasttime = ts;
|
||||||
|
transition_update_list.forEach(function(elem) {
|
||||||
|
elem.update(et);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
run_ticker(ticker_lasttime);
|
||||||
|
|
||||||
|
window.Transition=Transition;
|
||||||
|
})();
|
24
js/libutil.js
Normal file
24
js/libutil.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
(function() {
|
||||||
|
|
||||||
|
var libutil= {};
|
||||||
|
|
||||||
|
libutil.isNumber=function(v) {
|
||||||
|
return typeof v === "number";
|
||||||
|
};
|
||||||
|
|
||||||
|
libutil.clamp=function(val, min, max) {
|
||||||
|
if(window.EnableDebugMode) {
|
||||||
|
if(max<min) {
|
||||||
|
console.warn("ibutil.clamp(): the max value is less than the min value");
|
||||||
|
var min1 = Math.min(min, max);
|
||||||
|
var max1 = Math.max(min, max);
|
||||||
|
return Math.min(Math.max(val, min1), max1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Math.min(Math.max(val, min), max);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
window.libutil=libutil;
|
||||||
|
|
||||||
|
})();
|
Loading…
x
Reference in New Issue
Block a user