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

77 lines
2.3 KiB
JavaScript
Raw Normal View History

2023-01-27 11:45:10 +00:00
/**************************************
文件名listener.js
功能该模块用于处理事件监听相关内容
版本2.0(23.01.08)
**************************************/
/**************************************
对象名Listener
参数lang: 传入语言, grid: 传入grid对象
**************************************/
function Listener(lang, grid){
//在设置监听的匿名函数中“this”不是指代的Listener对象必须单独获取
let self = this;
//获取语言
this.lang = lang;
//获取grid对象
this.grid = grid;
//获取所有返回按钮
this.back = document.querySelectorAll(".back");
//获取所有新游戏按钮
this.newBtn = document.querySelectorAll(".new");
//监听输入框旁的确认按钮
this.confirm = document.querySelector(".confirm");
//监听返回按钮点击事件
for (let i = 0; i < this.back.length; i++){
this.back[i].addEventListener("click", function(){
window.open(`./menu.html?lang=${self.lang}`, "_self");
});
}
//监听新游戏按钮点击事件
for (let i = 0; i < this.newBtn.length; i++){
this.newBtn[i].addEventListener("click", function(){
self.grid.restart();
})
}
//监听确认按钮点击事件
this.confirm.addEventListener("click", function(){
self.grid.rankConfirm();
})
//监听tile点击事件
for (let i = 0; i < this.grid.hSize; i++){
for (let j = 0; j < this.grid.wSize; j++){
let theTile = document.querySelector(`.tile-${i}-${j}`);
theTile.addEventListener("click", function (){
if(self.grid.now == "Waiting"){
self.grid.start();
}
self.grid.click(i, j);
});
theTile.addEventListener("contextmenu", function (){
self.grid.rightClick(i, j);
});
}
}
}
//屏蔽右键菜单
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;
}
}