login  Naam:   Wachtwoord: 
Registreer je!
 Forum

onkey(press)(down)

Offline daanlaan - 30/06/2009 13:31
Avatar van daanlaanMySQL interesse als je naar de volgende url gaat kan je met je pijltjestoetsen een mannetje laten bewegen over de bg image, in mijn browser werkt het correct maar in andere browsers loopt hij alsmaar sneller als je een pijltje ingedrukt houdt
http://topspeedracing.be/new%20game/

mijn code:
  1. <html>
  2.  
  3. <body onkeydown = "move(event.keyCode)" onkeyup="stopmoving();" style="background:url(images/citybg.jpg);">
  4. <img id="blokje"></div>
  5. <input type="hidden" id="stop" value="move">
  6. <script type="text/javascript">
  7. var margintop = 0;
  8. var marginleft = 0;
  9. var side;
  10. function stopmoving()
  11. {
  12. side = document.getElementById('stop').value;
  13. document.getElementById('blokje').src = "images/stop_"+side+".png";
  14. document.getElementById('stop').value='stop';
  15. }
  16. function move(key)
  17. {
  18. if(key==37)
  19. {
  20. document.getElementById('blokje').src = "images/walk_left.gif";
  21. document.getElementById('stop').value="walk_left";
  22. moveLeft();
  23. }
  24. else if(key==38)
  25. {
  26. document.getElementById('blokje').src = "images/walk_up.gif";
  27. document.getElementById('stop').value="walk_up";
  28. moveUp();
  29. }
  30. else if(key==39)
  31. {
  32. document.getElementById('blokje').src = "images/walk_right.gif";
  33. document.getElementById('stop').value="walk_right";
  34. moveRight();
  35. }
  36. else if(key==40)
  37. {
  38. document.getElementById('blokje').src = "images/walk_down.gif";
  39. document.getElementById('stop').value="walk_down";
  40. moveDown();
  41. }
  42. }
  43. function moveDown()
  44. {
  45. margintop = margintop+1;
  46. document.getElementById('blokje').style.marginTop = margintop;
  47. if(document.getElementById('stop').value!="stop")
  48. {
  49. setTimeout('moveDown()',5);
  50. }
  51. }
  52. function moveUp()
  53. {
  54. margintop = margintop-1;
  55. document.getElementById('blokje').style.marginTop = margintop;
  56. if(document.getElementById('stop').value!="stop")
  57. {
  58. setTimeout('moveUp()',5);
  59. }
  60. }
  61. function moveLeft()
  62. {
  63. marginleft = marginleft-1;
  64. document.getElementById('blokje').style.marginLeft = marginleft;
  65. if(document.getElementById('stop').value!="stop")
  66. {
  67. setTimeout('moveLeft()',5);
  68. }
  69. }
  70. function moveRight()
  71. {
  72. marginleft = marginleft+1;
  73. document.getElementById('blokje').style.marginLeft = marginleft;
  74. if(document.getElementById('stop').value!="stop")
  75. {
  76. setTimeout('moveRight()',5);
  77. }
  78. }
  79. </script>
  80. </body>
  81.  
  82. </html>

4 antwoorden

Gesponsorde links
Offline Koen - 30/06/2009 15:14
Avatar van Koen PHP expert Gebruik onkeyup dan 

Probeer zelf maar eens bv a een tijdje ingedrukt te houden, dan snap je wel hoe dat komt!
Offline Martijn - 30/06/2009 15:22
Avatar van Martijn Crew PHP ik neem aan dat je onkeydown wilt blijven houden, want anders word racen wel raar.

Wat ie doet, zoals Koen suggereerd, is steeds het commando sturen. Als je 1x drukt ga je bv 10 stappen per minuut, maar als je 2x drukt word dan 20x. Dat los je op dus voor elke start even een stop te doen.

Dus voor de functie doe je een clearInterval() om de timersnelheid te resetten 
Offline daanlaan - 30/06/2009 16:48
Avatar van daanlaan MySQL interesse die clearInterval lost mijn probleem niet op, heb er ook eens clearTimeout voor gezet. maar ik snap niet hoe dit eigelijk zou kunnen helpen maar stel dat ik pokemon wil namaken maar dan bv met 1 stadje ofzo en zeer primitief, zou dit dan kunnen gaan in javascript en op deze manier of zal zoiets echt in java moeten? 
Offline Martijn - 30/06/2009 16:50
Avatar van Martijn Crew PHP je moet nog een stopMoving() maken, een die niet je img veranderd, en die als eerste regel van elke move doen
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.426s