◆少前百科是非盈利性、非官方的少女前线维基百科。 ◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科。 ◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科 ◆To foreigners,You can use twitter to contact us. |
“Widget:AVGplayer/js”的版本间的差异
小 (禁用对立绘和背景图的拖动) |
小 |
||
(未显示同一用户的11个中间版本) | |||
第4行: | 第4行: | ||
var xmlhttp_doll = new XMLHttpRequest(); | var xmlhttp_doll = new XMLHttpRequest(); | ||
xmlhttp_doll.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}")); |
+ | getdollarrays(); | ||
+ | } | ||
}; | }; | ||
xmlhttp_doll.open("GET", "/index.php?title=JSON:AVGDOLL&action=raw", true); | xmlhttp_doll.open("GET", "/index.php?title=JSON:AVGDOLL&action=raw", true); | ||
第34行: | 第36行: | ||
xmlhttp_se.send(); | xmlhttp_se.send(); | ||
+ | function getdollarrays() { | ||
mw.loader.using('ext.gadget.md5hasher', function() { | mw.loader.using('ext.gadget.md5hasher', function() { | ||
const prefabcodes = [0, 2, 3, 4, 5, 6, 7, 8, 9].concat([...Array(26)].map((_, i) => String.fromCharCode(i + 97))); | const prefabcodes = [0, 2, 3, 4, 5, 6, 7, 8, 9].concat([...Array(26)].map((_, i) => String.fromCharCode(i + 97))); | ||
第47行: | 第50行: | ||
} | } | ||
}); | }); | ||
+ | } | ||
var effarray = { | var effarray = { | ||
第112行: | 第116行: | ||
var loadingfin = {doll:0, bg:0, bgm:0, eff:0}; | var loadingfin = {doll:0, bg:0, bgm:0, eff:0}; | ||
var loadingnow = {doll:0, bg:0, bgm:0, eff:0}; | var loadingnow = {doll:0, bg:0, bgm:0, eff:0}; | ||
+ | |||
+ | var bgmEnd = false; | ||
window.playAvgGlobal = function(text, title) { | window.playAvgGlobal = function(text, title) { | ||
第118行: | 第124行: | ||
return; | return; | ||
} | } | ||
+ | bgmEnd = false; | ||
avgtxt = text; | avgtxt = text; | ||
endsign = 0; | endsign = 0; | ||
第133行: | 第140行: | ||
function avgcreat(){ | function avgcreat(){ | ||
$(".avgchoice").click(function(){ | $(".avgchoice").click(function(){ | ||
+ | if (window.pauseMainBgm) window.pauseMainBgm(); | ||
+ | bgmEnd = false; | ||
var xmlhttp = new XMLHttpRequest(); | var xmlhttp = new XMLHttpRequest(); | ||
xmlhttp.onreadystatechange = function() { | xmlhttp.onreadystatechange = function() { | ||
第364行: | 第373行: | ||
else readline(); | else readline(); | ||
}); | }); | ||
+ | |||
+ | function endBgm() { | ||
+ | bgmEnd = true; | ||
+ | $('#avgbgm')[0].pause(); | ||
+ | setTimeout(function() { | ||
+ | if (endsign == 1 && window.canPlayMainBgm && window.resumeMainBgm) window.resumeMainBgm(); | ||
+ | }, 2000); | ||
+ | $('#avgbox')[0].removeEventListener('click', endBgm); | ||
+ | } | ||
function readline(){ | function readline(){ | ||
第370行: | 第388行: | ||
if(endsign == 1 && !avgnextline) { | if(endsign == 1 && !avgnextline) { | ||
$("#avgline").html(`<div class="endsigndiv">${$("#avgtitle").html()} END</div>`); | $("#avgline").html(`<div class="endsigndiv">${$("#avgtitle").html()} END</div>`); | ||
+ | if (!bgmEnd) { | ||
+ | $('#avgbox')[0].addEventListener('click', endBgm); | ||
+ | } | ||
return; | return; | ||
} | } | ||
第384行: | 第405行: | ||
if(avgbranches.length != 0){ | if(avgbranches.length != 0){ | ||
− | let html_string = `<div id="avgbranchdiv">`; | + | let isCg = avgbranches.every(opt => opt.startsWith('cg')); |
− | for(i in avgbranches) html_string += `<div class="avgbranch" index="${i}">${ | + | let html_string = `<div id="avgbranchdiv"${isCg ? ' class="cg-options"' : ''}>`; |
+ | for(i in avgbranches) { | ||
+ | let optionText = avgbranches[i]; | ||
+ | let xpos = '', ypos = ''; | ||
+ | if (isCg) { | ||
+ | optionText = optionText.slice(2); | ||
+ | let poses = optionText.split(','); | ||
+ | xpos = `calc(50% + ${poses[0]*0.625}px)`; | ||
+ | ypos = `calc(50% - ${poses[1]*0.625}px)`; | ||
+ | } | ||
+ | html_string += `<div class="avgbranch" index="${i}"${isCg ? ' style="left:'+xpos+';top:'+ypos+'"' : ''}>${isCg ? '' : optionText}<\/div>`; | ||
+ | } | ||
html_string += `<\/div>`; | html_string += `<\/div>`; | ||
第416行: | 第448行: | ||
setTimeout(function(){ | setTimeout(function(){ | ||
$(".avgefect").remove(); $(".avgsound").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(""); | ||
setTimeout(function(){ | setTimeout(function(){ | ||
第698行: | 第730行: | ||
//word line - color & size handler | //word line - color & size handler | ||
if(thisline.indexOf(":") != -1){ | if(thisline.indexOf(":") != -1){ | ||
− | let keyword = (thisline.indexOf("+") != -1) ? "+" : ((thisline.indexOf("<c>") != -1) ? "<c>" : "\n"); | + | let keyword = (thisline.indexOf("+") != -1) ? "+" : ((thisline.indexOf("<c>") != -1) ? "<c>" : (thisline.indexOf('<cg>') != -1 ? '<cg>' : "\n")); |
let line = thisline.slice(thisline.indexOf(":") + 1, thisline.length); | let line = thisline.slice(thisline.indexOf(":") + 1, thisline.length); | ||
// color & size | // color & size | ||
第723行: | 第755行: | ||
avgbranches = line_temp.split("<c>"); | avgbranches = line_temp.split("<c>"); | ||
console.log(avgbranches); | console.log(avgbranches); | ||
+ | } else if (line.indexOf('<cg>') != -1) { | ||
+ | let line_temp = line.slice(line.indexOf('<cg>') + 4, line.length).replace('\r', ''); | ||
+ | avgbranches = line_temp.split('<cg>').map(opt => 'cg' + opt); | ||
+ | console.log(avgbranches); | ||
} | } | ||
} else { | } else { | ||
第771行: | 第807行: | ||
log_string += `<\/td><td style="width:80%; vertical-align:baseline;">` + ((thisline.indexOf("<分支") != -1) ? ("分支" + thisline[thisline.indexOf("<分支") + 4] + "<br>") : ""); | log_string += `<\/td><td style="width:80%; vertical-align:baseline;">` + ((thisline.indexOf("<分支") != -1) ? ("分支" + thisline[thisline.indexOf("<分支") + 4] + "<br>") : ""); | ||
log_string += thisline.slice(thisline.indexOf(":") + 1, thisline.length).replace(/\+/g, "<br>").replace(/<c>/g, " 分支") + `<\/td><\/tr><\/table><\/div>`; | log_string += thisline.slice(thisline.indexOf(":") + 1, thisline.length).replace(/\+/g, "<br>").replace(/<c>/g, " 分支") + `<\/td><\/tr><\/table><\/div>`; | ||
+ | log_string += thisline.slice(thisline.indexOf(":") + 1, thisline.length).replace(/\+/g, "<br>").replace(/<cg>/g, " 分支") + `<\/td><\/tr><\/table><\/div>`; | ||
if(avgtxt.indexOf("\n", logpos) == -1) break; | if(avgtxt.indexOf("\n", logpos) == -1) break; |