Minesweeper-2.0-test/scripts/menu/listener.js

147 lines
4.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**************************************
文件名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;
}
}