กดปุ่มพร้อมกัน
ปัญหาก็คือว่า
สามารถตรวจสอบได้ครั้งละ 1 ปุ่ม
ความต้องการของผม
ก็คือว่า ไม่ว่ากดปุ่ม Z ก่อนหรือหลังปุ่มลูกศร ก็ให้ฟังชันของปุ่มที่กดยังคนทำงานอยู่
เท่าที่ผมอ่านๆ มาผมว่าน่าจะตรวจสอบด้วยตัวแปรบางตัวที่เอาไว้ใช้เก็บค่าสถานะการกดปุ่ม
ว่า ถ้าปุ่มนี้ถูกกดอยู่ สถานะของมันต้องเป็น true
ว่า ถ้าปุ่มนี้ไม่ได้ถูกกดอยู่ สถานะของมันต้องเป็น false
// เลยประกาศตัวแปรสำหร้บเก็บค่าสถานะ
var keyarrowLeft = false;
var keyarrowUp = false;
var keyarrowRight = false;
var keyarrowDown = false;
var Speed = 2;
พอจะตรวจสอบว่า ในขณะที่เรากดปุ่ม Z ปุ่มลูกศร บน ล่าง ซ้าย ขวา ได้ถูกกดอยู่ก่อนหรือไม่
if(keyarrowLeft==true||keyarrowUp==true||keyarrowRight==true||keyarrowDown==true)
ตัวใดก็ตามที่มีค่าเป็น true
Speed จึงจะถูกบวกเพิ่ม
เป็นทำงานได้ในระดับนึง แต่ก็ยังไม่ลื่นไหล เพราะว่า
สมมุติว่าผมกดปุ่ม ลูกศรซ้าย ตอนนี้ ค่าของ keyarrowLeft = true;
แล้วกดปุ่ม Z Speed ถูกบวกเพิ่มถูกต้อง
ตอนนี้การทำงานไปอยู่ที่ปุ่ม Z อย่างเดียว
การทำงานของปุ่มลูกศรซ้ายไม่ทำงานทั้งๆ ที่กดอยู่
ค่าของ keyarrowLeft จะ = false; ก็ต่อเมื่อปล่อยปุ่มแล้วเท่านั้น
ถ้ากดปุ่ม Z ก่อน ฟังชันของปุ่ม Z ยังไม่ทำงาน
แล้วกดปุ่ม ลูกศรซ้าย ฟังชันของปุ่ม ลูกศรซ้าย ทำงาน
พอฟังชันของปุ่ม ลูกศรซ้าย ทำงาน ฟังชันของปุ่ม Z ก็ทำงานตาม
ความต้องการของผม
ก็คือว่า ไม่ว่ากดปุ่ม Z ก่อนหรือหลังปุ่มลูกศร ก็ให้
โค้ดของผมเป็นดังนี้ี้
// ประกาศตัวแปรสำหร้บตรวจสอบสถานะ
var keyarrowLeft = false;
var keyarrowUp = false;
var keyarrowRight = false;
var keyarrowDown = false;
var Speed = 2;
document.onkeydown = checkKeyDown; // หากกดปุ่มให้เรียกฟังชั่น checkKeyDown ทำงาน
document.onkeyup = checkKeyUp; // หากปล่อยปุ่มให้เรียกฟังชั่น checkKeyUp ทำงาน
function checkKeyDown(e){
var keycode;
if(!e){ // หาเป็น IE
keycode=window.event.keyCode;
}else if(e){ // หากเป็น Firefox
keycode = e.which;
}
if(keycode==37){ // ลูกศรซ้าย
keyarrowLeft = true;
......................
}
if(keycode==38){ // ลูกศรขึ้น
keyarrowUp = true;
......................
}
if(keycode==39){ // ลูกศรขวา
keyarrowRight = true;
......................
}
if(keycode==40){ // ลูกศรลง
keyarrowDown = true;
......................
}
if(keycode==90||keycode==122){ // ปุ่ม Z
if(keyarrowLeft==true||keyarrowUp==true||keyarrowRight==true||keyarrowDown==true){
if(Speed<4){
Speed++;
}
}
}
}
function checkKeyUp(e){
var keycode;
if(!e){ // หาเป็น IE
keycode=window.event.keyCode;
}else if(e){ // หากเป็น Firefox
keycode = e.which;
}
if(keycode==37){ // ลูกศรซ้าย
keyarrowLeft = false;
}
if(keycode==38){ // ลูกศรขึ้น
keyarrowUp = false;
}
if(keycode==39){ // ลูกศรขวา
keyarrowRight = false;
}
if(keycode==40){ // ลูกศรลง
keyarrowDown = false;
}
if(keycode==90||keycode==122){ // ปุ่ม Z
Speed = 2;
}
}
if(keycode==37){ // ลูกศรซ้าย
......................
......................
if(keycode==37&&keycode==90||keycode==37&&keycode==122){ // ปุ่ม Z
if(Speed<4){
Speed++;
}
}
......................
......................
}
ขอบคุณ คุณอาฮ่ะ :)
ความท้าทายมันอยู่ที่ความ ซีเครียด (ซีเรียส) นี่แหล่ะ
ยิ่งเครียดมาก ก็แสดงว่ายิ่งท้าทายมาก (จริงอ่ะ เหรอ ?)
เพราะฉะนั้น กลับไปเครียดต่อ .........................