147 lines
4.6 KiB
JavaScript
147 lines
4.6 KiB
JavaScript
/**************************************
|
||
文件名:listener.js
|
||
功能:该模块用于处理事件监听相关内容
|
||
版本:2.0(23.01.08)
|
||
**************************************/
|
||
|
||
/**************************************
|
||
对象名:Listener
|
||
参数:lang: 传入语言
|
||
**************************************/
|
||
function Listener(lang) {
|
||
//获取HTML中的Language按钮
|
||
this.langSltBtn = document.querySelector(".langSltBtn");
|
||
//获取语言按钮列表
|
||
this.langSlt = document.querySelector("footer .language");
|
||
//获取所有的语言按钮
|
||
this.langs = document.querySelectorAll(".lang");
|
||
//获取难度菜单
|
||
this.difficulty = document.querySelector(".difficulty");
|
||
//获取主菜单列表按钮
|
||
this.selection = document.querySelectorAll(".menuList button");
|
||
//获取难度列表按钮
|
||
this.diffBtn = document.querySelectorAll(".difficulty button");
|
||
//获取新手教程界面
|
||
this.tutorial = document.querySelector(".tutorialBlk");
|
||
//获取新手教程界面返回按钮
|
||
this.tutoBack = document.querySelector(".tutorialBlk .back");
|
||
//获取排行榜界面
|
||
this.leaderBlk = document.querySelector(".leaderBlk");
|
||
//获取排行榜界面返回按钮
|
||
this.leadBack = document.querySelector(".leaderBlk .back");
|
||
//获取语言
|
||
this.lang = lang;
|
||
|
||
//在设置监听的匿名函数中,“this”不是指代的Listener对象,必须单独获取
|
||
let self = this;
|
||
//语言按钮点击事件
|
||
let flag = false;
|
||
this.langSltBtn.addEventListener("click", function (){
|
||
flag = !flag;
|
||
self.langSlt.style.display = (flag) ? "flex" : "none";
|
||
});
|
||
|
||
//主菜单列表按钮点击事件
|
||
for (let i = 0; i < this.selection.length; i++){
|
||
this.selection[i].addEventListener("click", function (){
|
||
self.btnClick(i);
|
||
})
|
||
}
|
||
|
||
//难度列表按钮点击事件
|
||
for (let i = 0; i < this.diffBtn.length; i++){
|
||
this.diffBtn[i].addEventListener("click", function (){
|
||
self.diffBtnClick(i);
|
||
})
|
||
}
|
||
|
||
//新手教程界面返回按钮点击事件
|
||
this.tutoBack.addEventListener("click", function (){
|
||
self.tutorial.style.display = "none";
|
||
});
|
||
|
||
//排行榜界面返回按钮点击事件
|
||
this.leadBack.addEventListener("click", function (){
|
||
self.leaderBlk.style.display = "none";
|
||
});
|
||
|
||
//切换语言
|
||
for (let i = 0; i < this.langs.length; i++) {
|
||
this.langs[i].addEventListener("click", function (){
|
||
let lang = self.langs[i].innerHTML;
|
||
let langCode = '';
|
||
switch(lang){
|
||
case "中文":
|
||
langCode = "zh_cn";
|
||
break;
|
||
case "English":
|
||
langCode = "en";
|
||
break;
|
||
case "日本語":
|
||
langCode = "jp";
|
||
break;
|
||
}
|
||
window.open(`./menu.html?lang=${langCode}`,"_self");
|
||
});
|
||
}
|
||
}
|
||
|
||
/**************************************
|
||
方式名:btnClick()
|
||
参数:i: 第i个按钮
|
||
功能:处理主菜单按钮事件
|
||
**************************************/
|
||
Listener.prototype.btnClick = function(i){
|
||
switch (i){
|
||
case 0:
|
||
this.difficulty.style.display = "block";
|
||
break;
|
||
case 1:
|
||
this.tutorial.style.display = "block";
|
||
break;
|
||
case 2:
|
||
this.leaderBlk.style.display = "block";
|
||
break;
|
||
case 3:
|
||
window.location.href = "about:blank";
|
||
window.close();
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**************************************
|
||
方式名:diffBtnClick()
|
||
参数:i: 第i个按钮
|
||
功能:处理难度选单按钮事件
|
||
**************************************/
|
||
Listener.prototype.diffBtnClick = function(i){
|
||
switch (i){
|
||
case 0:
|
||
window.open(`./game.html?lang=${this.lang}&mode=easy`, "_self");
|
||
break;
|
||
case 1:
|
||
window.open(`./game.html?lang=${this.lang}&mode=hard`, "_self");
|
||
break;
|
||
case 2:
|
||
window.open(`./game.html?lang=${this.lang}&mode=extra`, "_self");
|
||
break;
|
||
case 3:
|
||
this.difficulty.style.display = "none";
|
||
break;
|
||
}
|
||
}
|
||
|
||
//屏蔽右键菜单
|
||
document.oncontextmenu = function(event){
|
||
if(window.event){
|
||
event = window.event;
|
||
}try{
|
||
var the = event.srcElement;
|
||
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
|
||
return false;
|
||
}
|
||
return true;
|
||
}catch (e){
|
||
return false;
|
||
}
|
||
} |