◆少前百科是非盈利性、非官方的少女前线维基百科。
◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科
◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科
◆To foreigners,You can use twitter to contact us.
Icon Nyto Silver.png

“Widget:AVGplayer/js”的版本间的差异

来自少前百科GFwiki
跳转至: 导航搜索
(fix avgblack avgnavigationtitle)
(add sound effect)
第1行: 第1行:
 
<includeonly><script type="text/javascript">(window.RLQ=window.RLQ||[]).push(function(){
 
<includeonly><script type="text/javascript">(window.RLQ=window.RLQ||[]).push(function(){
var dollarray, bgarray, bgmarray;
+
var dollarray, bgarray, bgmarray, searray;
  
var xmlhttp_Spot = new XMLHttpRequest();
+
var xmlhttp_doll = new XMLHttpRequest();
xmlhttp_Spot.onreadystatechange = function() {
+
xmlhttp_doll.onreadystatechange = function() {
 
if (this.readyState == 4 && this.status == 200) {  
 
if (this.readyState == 4 && this.status == 200) {  
 
     dollarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 
     dollarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 
};
 
};
xmlhttp_Spot.open("GET", "/index.php?title=JSON:AVGDOLL&action=raw", true);
+
xmlhttp_doll.open("GET", "/index.php?title=JSON:AVGDOLL&action=raw", true);
xmlhttp_Spot.send();
+
xmlhttp_doll.send();
  
var xmlhttp_Spot = new XMLHttpRequest();
+
var xmlhttp_bg = new XMLHttpRequest();
xmlhttp_Spot.onreadystatechange = function() {
+
xmlhttp_bg.onreadystatechange = function() {
 
if (this.readyState == 4 && this.status == 200) {  
 
if (this.readyState == 4 && this.status == 200) {  
 
     bgarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 
     bgarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 
};
 
};
xmlhttp_Spot.open("GET", "/index.php?title=JSON:AVGBGCG&action=raw", true);
+
xmlhttp_bg.open("GET", "/index.php?title=JSON:AVGBGCG&action=raw", true);
xmlhttp_Spot.send();
+
xmlhttp_bg.send();
  
var xmlhttp_Spot = new XMLHttpRequest();
+
var xmlhttp_bgm = new XMLHttpRequest();
xmlhttp_Spot.onreadystatechange = function() {
+
xmlhttp_bgm.onreadystatechange = function() {
 
if (this.readyState == 4 && this.status == 200) {  
 
if (this.readyState == 4 && this.status == 200) {  
 
     bgmarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 
     bgmarray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 
};
 
};
xmlhttp_Spot.open("GET", "/index.php?title=JSON:AVGBGM&action=raw", true);
+
xmlhttp_bgm.open("GET", "/index.php?title=JSON:AVGBGM&action=raw", true);
xmlhttp_Spot.send();
+
xmlhttp_bgm.send();
  
var searray = {
+
var xmlhttp_se = new XMLHttpRequest();
      
+
xmlhttp_se.onreadystatechange = function() {
}
+
if (this.readyState == 4 && this.status == 200) {  
 +
     searray = JSON.parse(this.responseText.replace(/\/\*\s{1,4}\d{1,4}\s{1,4}\*\//g,"").replace(",\n}", "\n}"));}
 +
};
 +
xmlhttp_se.open("GET", "/index.php?title=JSON:AVGSE&action=raw", true);
 +
xmlhttp_se.send();
  
 
var effarray = {
 
var effarray = {
第105行: 第109行:
 
         $("#avgtitle").html($(this).children("span.avgname").html().replace(/<span class="subsign">/g, "").replace(/<\/span>/g, ""));
 
         $("#avgtitle").html($(this).children("span.avgname").html().replace(/<span class="subsign">/g, "").replace(/<\/span>/g, ""));
 
         console.log($(this).children("span.avgname").html().replace(/<span class="subsign">/g, "").replace(/<\/span>/g, "") + " : " + $(this).attr("link"));
 
         console.log($(this).children("span.avgname").html().replace(/<span class="subsign">/g, "").replace(/<\/span>/g, "") + " : " + $(this).attr("link"));
         $("#avgbgm").attr("src", "");
+
         $("#avgbgm").attr("src", ""); $(".avgsound").remove();
 
         $("#avgbackground").html("");
 
         $("#avgbackground").html("");
 
         $(".avgdollpic").remove();
 
         $(".avgdollpic").remove();
第145行: 第149行:
 
             <div id="avgtonext" class="avgbutton avgpushbutton">下一章节<\/div>
 
             <div id="avgtonext" class="avgbutton avgpushbutton">下一章节<\/div>
 
             <div id="avgchose" state="off" class="avgbutton">选择剧情<\/div>
 
             <div id="avgchose" state="off" class="avgbutton">选择剧情<\/div>
             <div id="avgload">加载进度: PIC[0/0] CG[0/0] BGM[0/0] OTH[0/0]<\/div>
+
             <div id="avgload">加载进度: PIC[0/0] CG[0/0] BGM[0/0] SE[0/0] E[0/0]<\/div>
 
         <\/div>
 
         <\/div>
  
第199行: 第203行:
 
             $(this).css({"background-color":"transparent","color":"#eaeaea"});
 
             $(this).css({"background-color":"transparent","color":"#eaeaea"});
 
             $("#avgbgm")[0].muted = true;
 
             $("#avgbgm")[0].muted = true;
 +
            for(let i in $(".avgsound")) $(".avgsound")[i].muted = true;
 
         } else if($(this).attr("state") == "off"){
 
         } else if($(this).attr("state") == "off"){
 
             $(this).attr("state", "on");
 
             $(this).attr("state", "on");
 
             $(this).css({"background-color":"#eaeaea","color":"black"});
 
             $(this).css({"background-color":"#eaeaea","color":"black"});
 
             $("#avgbgm")[0].muted = false;
 
             $("#avgbgm")[0].muted = false;
 +
            for(let i in $(".avgsound")) $(".avgsound")[i].muted = false;
 
         }
 
         }
 
     });
 
     });
第209行: 第215行:
 
         if(sound_num > 0) sound_num = sound_num - 1;
 
         if(sound_num > 0) sound_num = sound_num - 1;
 
         let back_text = String(sound_num) + "0%";
 
         let back_text = String(sound_num) + "0%";
         $("#avgbgm")[0].volume = sound_num / 10;
+
         $("#avgbgm")[0].volume = sound_num / 20;
 +
        for(let i in $(".avgsound")) $(".avgsound")[i].volume = sound_num / 10;
 
         $("#avgsoundwidth").css("cssText","background-image: linear-gradient(90deg, #eaeaea " + back_text + ", transparent " + back_text + ");");
 
         $("#avgsoundwidth").css("cssText","background-image: linear-gradient(90deg, #eaeaea " + back_text + ", transparent " + back_text + ");");
 
         $("#avgsoundwidth").attr("state",sound_num);
 
         $("#avgsoundwidth").attr("state",sound_num);
第217行: 第224行:
 
         if(sound_num < 10) sound_num = sound_num + 1;
 
         if(sound_num < 10) sound_num = sound_num + 1;
 
         let back_text = String(sound_num) + "0%";
 
         let back_text = String(sound_num) + "0%";
         $("#avgbgm")[0].volume = sound_num / 10;
+
         $("#avgbgm")[0].volume = sound_num / 20;
 +
        for(let i in $(".avgsound")) $(".avgsound")[i].volume = sound_num / 10;
 
         $("#avgsoundwidth").css("cssText","background-image: linear-gradient(90deg, #eaeaea " + back_text + ", transparent " + back_text + ");");
 
         $("#avgsoundwidth").css("cssText","background-image: linear-gradient(90deg, #eaeaea " + back_text + ", transparent " + back_text + ");");
 
         $("#avgsoundwidth").attr("state",sound_num);
 
         $("#avgsoundwidth").attr("state",sound_num);
第367行: 第375行:
 
         $("#avgbackground").fadeOut(1000 / autospeed); $("#avgword").fadeOut(1000 / autospeed);
 
         $("#avgbackground").fadeOut(1000 / autospeed); $("#avgword").fadeOut(1000 / autospeed);
 
         setTimeout(function(){
 
         setTimeout(function(){
             $(".avgefect").remove();
+
             $(".avgefect").remove(); $(".avgsound").remove();
 
             $(".avgdollpic").remove(); $("#avgbackground").html(""); $("#avgbgm").attr("src", "");
 
             $(".avgdollpic").remove(); $("#avgbackground").html(""); $("#avgbgm").attr("src", "");
 
             $("#avgspeaker").html(""); $("#avgline").html("");
 
             $("#avgspeaker").html(""); $("#avgline").html("");
第380行: 第388行:
 
     } else if(blacksign == 2){
 
     } else if(blacksign == 2){
 
         blacksign = 0;
 
         blacksign = 0;
 +
        if(!$("#avgbgm").attr("src") && $("#avgbgm")[0].paused){
 +
            $("#avgbgm").attr("src", $("#avgbgm").attr("src-save")); // this black is for ending mp4
 +
            $("#avgbgm")[0].play();
 +
        }
 
     }
 
     }
  
第385行: 第397行:
 
     if(thisline.indexOf("<BGM>") != -1){
 
     if(thisline.indexOf("<BGM>") != -1){
 
         $("#avgbgm").attr("src", bgmarray[thisline.slice(thisline.indexOf("<BGM>") + ("<BGM>").length, thisline.indexOf("</BGM>"))]);
 
         $("#avgbgm").attr("src", bgmarray[thisline.slice(thisline.indexOf("<BGM>") + ("<BGM>").length, thisline.indexOf("</BGM>"))]);
 +
        $("#avgbgm").attr("src-save", bgmarray[thisline.slice(thisline.indexOf("<BGM>") + ("<BGM>").length, thisline.indexOf("</BGM>"))]);
 
         $("#avgbgm")[0].play();
 
         $("#avgbgm")[0].play();
 +
    }
 +
 +
    // sound effect
 +
    if(thisline.indexOf("<SE1>") != -1){
 +
        while(thisline.indexOf("<SE1>") != -1){
 +
            sound = thisline.slice(thisline.indexOf("<SE1>") + ("<SE1>").length, thisline.indexOf("</SE1>"));
 +
            thisline = thisline.replace("<SE1>" + sound + "</SE1>", "");
 +
 +
            let audio = new Audio();
 +
            audio.addEventListener("ended", function(){ $(this).remove();});
 +
            $(audio).attr({"src":searray[sound], "preload":"preload", "controls":"controls"});
 +
            $(audio).addClass(".avgsound");
 +
            audio.play();
 +
 +
            if($("#avgsound").attr("state") == "off") audio.muted = true;
 +
            audio.volume = Number($("#avgsoundwidth").attr("state")) / 10;
 +
        }
 
     }
 
     }
  
第722行: 第752行:
 
/*------ first load, preload, display loading information ------*/
 
/*------ first load, preload, display loading information ------*/
 
function firstloading(){
 
function firstloading(){
     loadingfin = {doll:0, bg:0, bgm:0, eff:0};
+
     loadingfin = {doll:0, bg:0, bgm:0, se:0, eff:0};
     loadingnow = {doll:0, bg:0, bgm:0, eff:0};
+
     loadingnow = {doll:0, bg:0, bgm:0, se:0, eff:0};
  
 
     var logpos = 0;
 
     var logpos = 0;
     var loading = {doll:[], bg:[], bgm:[], eff:[]};
+
     var loading = {doll:[], bg:[], bgm:[], se:[], eff:[]};
  
 
     /*--------------------------- key word query, console that not in the array ---------------------------*/
 
     /*--------------------------- key word query, console that not in the array ---------------------------*/
第773行: 第803行:
 
                 if(a == loading.bgm[i].ID){ sign = 0; break; }
 
                 if(a == loading.bgm[i].ID){ sign = 0; break; }
 
             } if(sign) loading.bgm.push({"ID":a, "URL":bgmarray[a]});
 
             } if(sign) loading.bgm.push({"ID":a, "URL":bgmarray[a]});
 +
        }
 +
        if(thisline.indexOf("<SE1>") != -1){
 +
            while(thisline.indexOf("<SE1>") != -1){
 +
                let sign = 1;
 +
                let a = thisline.slice(thisline.indexOf("<SE1>") + ("<SE1>").length, thisline.indexOf("</SE1>"));
 +
                thisline = thisline.replace("<SE1>" + a + "</SE1>", "");
 +
                for(let i = 0; i < loading.se.length; i++){
 +
                    if(a == loading.se[i].ID){ sign = 0; break; }
 +
                } if(sign) loading.se.push({"ID":a, "URL":searray[a]});
 +
            }
 
         }
 
         }
 
         if(thisline.indexOf("<BIN>") != -1){
 
         if(thisline.indexOf("<BIN>") != -1){
第806行: 第846行:
  
 
     /*----------------- console loading urls ---------------*/
 
     /*----------------- console loading urls ---------------*/
     console.log("Character Image array"); console.log(loading.doll);
+
     console.log("Character Image", loading.doll);
     console.log("Background CG array"); console.log(loading.bg);
+
     console.log("Background CG", loading.bg);
     console.log("Background Music array"); console.log(loading.bgm);
+
     console.log("Background Music", loading.bgm);
     console.log("Common Effect array"); console.log(loading.eff);
+
    console.log("Sound Effect", loading.se);
 +
     console.log("Common Effect", loading.eff);
 
     console.log("********* Console end *********");
 
     console.log("********* Console end *********");
 
     loadingfin.doll = loading.doll.length;
 
     loadingfin.doll = loading.doll.length;
 
     loadingfin.bg = loading.bg.length;
 
     loadingfin.bg = loading.bg.length;
 
     loadingfin.bgm = loading.bgm.length;
 
     loadingfin.bgm = loading.bgm.length;
 +
    loadingfin.se = loading.se.length;
 
     loadingfin.eff = loading.eff.length;
 
     loadingfin.eff = loading.eff.length;
 
     loading_sub();
 
     loading_sub();
第840行: 第882行:
 
         });
 
         });
 
         $(audio).attr({"src":bgmarray[loading.bgm[i].ID], "file":loadingfile, "preload":"preload", "controls":"controls"});
 
         $(audio).attr({"src":bgmarray[loading.bgm[i].ID], "file":loadingfile, "preload":"preload", "controls":"controls"});
 +
    }
 +
    for(i in loading.se){
 +
        let audio = new Audio();
 +
        audio.addEventListener("canplaythrough", function(){
 +
            if($(this).attr("file") == loadingfile) loadingnow.se ++;
 +
            loading_sub(); $(this).remove();
 +
        });
 +
        $(audio).attr({"src":searray[loading.se[i].ID], "file":loadingfile, "preload":"preload", "controls":"controls"});
 
     }
 
     }
 
     for(i in loading.eff){
 
     for(i in loading.eff){
第863行: 第913行:
  
 
function loading_sub(){
 
function loading_sub(){
     $("#avgload").html(`加载进度: PIC[${loadingnow.doll}/${loadingfin.doll}] CG[${loadingnow.bg}/${loadingfin.bg}] BGM[${loadingnow.bgm}/${loadingfin.bgm}] OTH[${loadingnow.eff}/${loadingfin.eff}]`);
+
     $("#avgload").html(`加载进度: PIC[${loadingnow.doll}/${loadingfin.doll}] CG[${loadingnow.bg}/${loadingfin.bg}] BGM[${loadingnow.bgm}/${loadingfin.bgm}] SE[${loadingnow.se}/${loadingfin.se}] E[${loadingnow.eff}/${loadingfin.eff}]`);
 
}
 
}
  
 
/*---------------------------特效code 创建---------------------------*/
 
/*---------------------------特效code 创建---------------------------*/
 
function effect_creat(effect_name){
 
function effect_creat(effect_name){
     if(effect_name == "%%code=AVG_ink1%%") {
+
     if(effect_name.slice(0, ("%%code=AVG_ink").length) == "%%code=AVG_ink") {
 
         let new_element = document.createElement('video');
 
         let new_element = document.createElement('video');
 
         $(new_element).attr({"class":"avgefect", "autoplay":"autoplay", "preload":"auto", "src":effarray[effect_name]});
 
         $(new_element).attr({"class":"avgefect", "autoplay":"autoplay", "preload":"auto", "src":effarray[effect_name]});
 
         $(new_element).css({"position":"absolute", "width":"1200px", "height":"675px", "top":"0px", "left":"0px", "overflow":"hidden", "z-index":"1"});
 
         $(new_element).css({"position":"absolute", "width":"1200px", "height":"675px", "top":"0px", "left":"0px", "overflow":"hidden", "z-index":"1"});
         $(new_element).bind('ended', function(){ $(this).remove(); });
+
         $(new_element).bind('ended', function(){ $(this).remove();});
 
         $("#avgbox").append(new_element);
 
         $("#avgbox").append(new_element);
 +
        $("#avgbgm")[0].pause();
 
     } else if(effect_name.slice(0, ("%%code=NPC_TV").length) == "%%code=NPC_TV"){
 
     } else if(effect_name.slice(0, ("%%code=NPC_TV").length) == "%%code=NPC_TV"){
 
         let new_element = document.createElement('img');
 
         let new_element = document.createElement('img');

2021年7月16日 (五) 01:37的版本