我正在我的网页游戏上实施库存机制,我想稍微复杂一点。
为了打开大门,您需要找到断路器。当你找到它时,你需要点击boltcutters然后在链上打破它,这就是我工作的部分。 但是我希望实现某种功能,如果在点击boltcutters之后我点击任何地方,但在链上我想运行一个函数取消链函数(改变颜色)并显示“Cant use it here”msg。例如。
简而言之,我需要找到一个解决方案,其中(伪代码):
If(boltcutters_clicked){
if(clicked_on_chain){
openthedoor()}
else {
cancelBoltcutters()}
以下是我现在的代码部分,如果有帮助的话:
//链力学
var boltcutters_used = false;
document.getElementById('item_boltcutters').onmousedown = function(){
boltcutters_used = true;
document.getElementById('item_boltcutters').style.color = "red";
document.getElementById('item_boltcutters').style.border = "1px solid red";
}
var boltcutters_found = false;
document.getElementById("chain").onmousedown = function(){
if(boltcutters_used){
alert('you open the door');
} else if(!boltcutters_found){
alert("I need to find something to break this chain...")
} else {
alert("Boltcutters could do the trick")
}
}
感谢下面提到的想法,我提出了以下解决方案:
var last_clicked = null;
var test=0;
window.onclick = function (e) {
last_clicked = e.target;
if(boltcutters_used == true){
test++;
}
if(boltcutters_used == true && last_clicked !== document.getElementById("chain") && test >1){
alert("Can't use it here");
boltcutters_used = false;
test=0;
}
}
它有效:)
答案 0 :(得分:2)
维护最后点击的项目
有一个变量来存储last clicked
元素
在window click
上更新该变量的值
在chain
事件处理程序
var last_clicked = null;
window.onclick = function (e) {
last_clicked = e.target;
}
var boltcutters_used = false;
document.getElementById('item_boltcutters').onmousedown = function(){
boltcutters_used = true;
document.getElementById('item_boltcutters').style.color = "red";
document.getElementById('item_boltcutters').style.border = "1px solid red";
}
var boltcutters_found = false;
document.getElementById("chain").onmousedown = function(){
if(boltcutters_used){
if(last_clicked === document.getElementById("item_boltcutters")) {
alert('you open the door');
} else {
alert("You should use the bolt cutters on this");
}
} else if(!boltcutters_found){
alert("I need to find something to break this chain...")
} else {
alert("Boltcutters could do the trick")
}
}