में प्रोग्रामेटिक रूप से एक कीडाउन घटना को ट्रिगर करना मेरे पास keydown
पर चल रही विंडो से जुड़ा एक ईवेंट है। मैं कीबोर्ड पर एक कुंजी मारने के लिए एक नियमित (प्रति अंतराल) प्रोग्रामेटिक रूप से मार कर इसका परीक्षण करना चाहता हूं। निम्न कोड काम नहीं करता है - लेकिन अगर मैं वास्तव में कीबोर्ड पर एक कुंजी दबा रहा हूं तो ठीक काम करता है।वेनिला जावास्क्रिप्ट
मैं मूल रूप से करने की कोशिश की:
var evt = document.createEvent("KeyboardEvent");
setInterval(function() {
evt.initKeyEvent("keydown", true, true, window, false, false, false, false, 13, 13);
}, 500);
यहाँ मेरे वर्तमान keydown
घटना है:
window.addEventListener('keydown', function(k) {
switch(k.keyCode) {
case 38: //up
if (Game.Area[Game.Player.x][Game.Player.y-1].type !== 0 && Game.Player.y > 0) {
Game.Player.y--;
}
Game.Player.d = 0;
break;
case 40: //down
if (Game.Area[Game.Player.x][Game.Player.y+1].type !== 0 && Game.Player.y < Game.Area[0].length-1) {
Game.Player.y++;
}
Game.Player.d = 1;
break;
case 37: //left
if (Game.Area[Game.Player.x-1][Game.Player.y].type !== 0 && Game.Player.x > 0) {
Game.Player.x--;
}
Game.Player.d = 2;
break;
case 39: //right
if (Game.Area[Game.Player.x+1][Game.Player.y].type !== 0 && Game.Player.y < Game.Area.length-1) {
Game.Player.x++;
}
Game.Player.d = 3;
break;
case 66:
if (Game.Player.d === 0 && Game.Player.y > 0) { //up
Game.Area[Game.Player.x][Game.Player.y-1].type = 60;
} else if (Game.Player.d === 1 && Game.Player.y < Game.Area.length) { //down
Game.Area[Game.Player.x][Game.Player.y+1].type = 60;
} else if (Game.Player.d === 2 && Game.Player.x > 0) { //left
Game.Area[Game.Player.x-1][Game.Player.y].type = 60;
} else if (Game.Player.d === 3 && Game.Player.x < Game.Area.length) { //right
Game.Area[Game.Player.x+1][Game.Player.y].type = 60;
}
break;
default:
break;
}
Game.MoveZeds();
for (var z = 0; z < Game.Zeds.length; z++) {
if (Game.Player.x === Game.Zeds[z].x && Game.Player.y === Game.Zeds[z].y) {
alert("Ouch!");
}
}
});
जब आप "कीडाउन" सुन रहे हों तो आप "कीप्रेस" ईवेंट भेज रहे हैं। क्या यह समस्या हो सकती है? – zvona
मुझे किसी भी घटना के साथ निम्न त्रुटि मिलती है: 'Uncaught TypeError: ऑब्जेक्ट # <कीबोर्डइवेंट> में कोई विधि नहीं है' initKeyEvent'' - अद्यतन प्रश्न:) –
initKeyEvent, मुझे लगता है, केवल फ़ायरफ़ॉक्स है। इसे तब जांचें: http://stackoverflow.com/questions/1897333/firing-a-keyboard-event-on-chrome – zvona