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

77 lines
2.3 KiB
JavaScript
Raw 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: 传入语言, 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;
}
}