From 9aee3f16503072940156915af1f344ea73f59cec Mon Sep 17 00:00:00 2001 From: lhy6305 Date: Tue, 22 Apr 2025 23:21:12 +0800 Subject: [PATCH] git auto update --- assets/sprite-pointer_tail.png | Bin 0 -> 634 bytes js/1-jsloader.js | 20 +++--- js/2-jsloadentry.js | 29 ++++----- js/libassetloader.js | 112 +++++++++++++++++++++++++++++++++ js/libmain.js | 2 + 5 files changed, 139 insertions(+), 24 deletions(-) create mode 100644 assets/sprite-pointer_tail.png create mode 100644 js/libassetloader.js diff --git a/assets/sprite-pointer_tail.png b/assets/sprite-pointer_tail.png new file mode 100644 index 0000000000000000000000000000000000000000..f1919bfa930035eb4ed2df044ef765ac33b4af5e GIT binary patch literal 634 zcmV-=0)_pFP)Px%G)Y83RCt{2++A+MFc3!3P<0`QHL(8`um;3V=u=e7!Z^0)$K%}dgg|7bmHKt! zIN3G;006{wyWZco>;3KB2LQNf3BikIBLLP@3Yh2Xp^_(QJ?R<*Ab_ePAtW7C`|(DP zb-Ui*THy>}aXss5v#rII)(1&NAQ;P2(2?mW!sIn|a{&GwovNflM1R%Oe|G~G`&EK=^qqYX8 zSqtO#-|3HcBk1RO?_*lmvWI*sO2a|3kJ>aQ-N)!Ldiv4+Cz4L4vmgKmoH2mXdT9Vz z^iT>R?GQYADyq@PNFXse)`bp00?0Oi^4j}*);-iFFvQ|H6^0H#02mQE0P{5<>)M}Q zTh>k|V5=TJO?%colrDl;)W%vu2cS0s*fxMmYiyd2OZrwfr_sl38=6;ptM&*|4=BXr7o>rc-e9a{aYWU4d!c@G32 z(7|#7Z3#4qQ*n);nlb#gjQ|8fIK$(xG?jWF0D&OR@IX{81R$`8RUe7(wW|OCih8an zN7=tf(gLVDa&bj_L%N0#O#+yQ*GBZCA_g%44C#3~6zK?HdY^)g=?=iDNM9iN1Dss~ U=0U_I*#H0l07*qoM6N<$g5rf8pa1{> literal 0 HcmV?d00001 diff --git a/js/1-jsloader.js b/js/1-jsloader.js index d457c0a..fa6732a 100644 --- a/js/1-jsloader.js +++ b/js/1-jsloader.js @@ -10,10 +10,10 @@ return; } - var scriptManager= {}; - scriptManager.loadingcount=0; + var ScriptManager= {}; + ScriptManager.loading_count=0; - scriptManager.loadjs=async function(pth) { + ScriptManager.loadjs=async function(pth) { var resolve; var reject; var ret=new Promise(function(s, r) { @@ -27,7 +27,7 @@ return; } removelisteners(); - scriptManager.loadingcount--; + ScriptManager.loading_count--; if(xhr.status!=200) { onfail(); return; @@ -72,19 +72,19 @@ xhr.open("GET", pth, true); xhr.send(); - scriptManager.loadingcount++; + ScriptManager.loading_count++; return ret; }; - scriptManager.isDone=function() { - return scriptManager.loadingcount==0; + ScriptManager.isDone=function() { + return ScriptManager.loading_count==0; }; - scriptManager.waitAll=async function() { + ScriptManager.waitAll=async function() { return new Promise(function(resolve, reject) { var i; i=setInterval(function() { - if(scriptManager.loadingcount==0) { + if(ScriptManager.loading_count==0) { clearInterval(i); resolve(); } @@ -92,5 +92,5 @@ }); }; - window.scriptManager=scriptManager; + window.ScriptManager=ScriptManager; })(); diff --git a/js/2-jsloadentry.js b/js/2-jsloadentry.js index 8c47bd1..ed2906c 100644 --- a/js/2-jsloadentry.js +++ b/js/2-jsloadentry.js @@ -1,24 +1,25 @@ //jsloadentry.js (async function() { - if(!(typeof scriptManager=="object"&&"loadjs" in scriptManager)) { + if(!(typeof ScriptManager=="object"&&"loadjs" in ScriptManager)) { if(typeof loadfail=="function") { - loadfail("jsloadentry.js: scriptManager.loadjs is not defined"); + loadfail("jsloadentry.js: ScriptManager.loadjs is not defined"); } else { - window.alert("jsloadentry.js: scriptManager.loadjs is not defined"); + 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/libwebglcheck.js"); - scriptManager.loadjs("./js/libpixi_v891gl.dev.min.js"); - //scriptManager.loadjs("./js/libpixi_v891gl.prod.min.js"); - await scriptManager.waitAll(); - await scriptManager.loadjs("./js/libtransition.js"); - await scriptManager.loadjs("./js/libmain.js"); - scriptManager.loadjs("./js/libpointerfx.js"); - await scriptManager.waitAll(); + ScriptManager.loadjs("./js/libpolyfill.requestAnimationFrame.js"); + ScriptManager.loadjs("./js/libutil.js"); + ScriptManager.loadjs("./js/libcubicbezier.js"); + ScriptManager.loadjs("./js/libwebglcheck.js"); + ScriptManager.loadjs("./js/libpixi_v891gl.dev.min.js"); + //ScriptManager.loadjs("./js/libpixi_v891gl.prod.min.js"); + ScriptManager.loadjs("./js/libassetloader.js"); + await ScriptManager.waitAll(); + await ScriptManager.loadjs("./js/libtransition.js"); + await ScriptManager.loadjs("./js/libmain.js"); + ScriptManager.loadjs("./js/libpointerfx.js"); + await ScriptManager.waitAll(); })(); \ No newline at end of file diff --git a/js/libassetloader.js b/js/libassetloader.js new file mode 100644 index 0000000..07db92b --- /dev/null +++ b/js/libassetloader.js @@ -0,0 +1,112 @@ +//libassetloader.js + +(async function() { + if(typeof XMLHttpRequest!="function") { + if(typeof loadfail=="function") { + loadfail("libassetloader.js: XMLHttpRequest(type of "+(typeof XMLHttpRequest)+") is not a function"); + } else { + window.alert("libassetloader.js: XMLHttpRequest(type of "+(typeof XMLHttpRequest)+") is not a function"); + } + return; + } + if(typeof Blob!="function") { + if(typeof loadfail=="function") { + loadfail("libassetloader.js: Blob(type of "+(typeof Blob)+") is not a function"); + } else { + window.alert("libassetloader.js: Blob(type of "+(typeof Blob)+") is not a function"); + } + return; + } + if(typeof URL!="function") { + if(typeof loadfail=="function") { + loadfail("libassetloader.js: URL(type of "+(typeof URL)+") is not a function"); + } else { + window.alert("libassetloader.js: URL(type of "+(typeof URL)+") is not a function"); + } + return; + } + + var AssetManager= {}; + + // map http url -> blob url + AssetManager.loadedAssets= {}; + + AssetManager.loading_count=0; + + AssetManager.loadWithCache=async function(pth) { + if(pth in AssetManager.loadedAssets) { + return Promise.resolve(AssetManager.loadedAssets[pth]); + } + return AssetManager.do_fetch_res(pth); + }; + + AssetManager.do_fetch_res=async function(pth) { + var resolve; + var reject; + var ret=new Promise(function(s, r) { + resolve=s; + reject=r; + }); + var xhr=new XMLHttpRequest(); + + xhr.responseType = "blob"; + + var onreadystatechange=async function() { + if(xhr.readyState!=XMLHttpRequest.DONE) { + return; + } + removelisteners(); + AssetManager.loading_count--; + if(xhr.status!=200) { + onfail(); + return; + } + AssetManager.loadedAssets[pth]=URL.createObjectURL(xhr.response); + console.debug("asset "+pth+" loaded from source."); + resolve(AssetManager.loadedAssets[pth]); + return; + }; + + var onfail=function() { + removelisteners(); + xhr.abort(); + window.loadfail("asset "+pth+" load failed"); + reject("asset "+pth+" load failed"); + }; + + var removelisteners=function() { + xhr.removeEventListener("readystatechange", onreadystatechange); + xhr.removeEventListener("error", onfail); + xhr.removeEventListener("abort", onfail); + }; + + xhr.addEventListener("readystatechange", onreadystatechange); + xhr.addEventListener("error", onfail); + xhr.addEventListener("abort", onfail); + + xhr.open("GET", pth, true); + xhr.send(); + + AssetManager.loading_count++; + return ret; + }; + + AssetManager.isDone=function() { + return AssetManager.loading_count==0; + }; + + AssetManager.waitAll=async function() { + return new Promise(function(resolve, reject) { + var i; + i=setInterval(function() { + if(AssetManager.loading_count==0) { + clearInterval(i); + resolve(); + } + }, 100); + }); + }; + + window.AssetManager=AssetManager; + +})(); \ No newline at end of file diff --git a/js/libmain.js b/js/libmain.js index 2734fb4..bf22c72 100644 --- a/js/libmain.js +++ b/js/libmain.js @@ -1,3 +1,5 @@ +//libmain.js + return (async function() { if(typeof PIXI!="object") { if(typeof loadfail=="function") {