Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z funkcja onKeyDown..js, problem z funkcja onKeyDown..js
Mastersieciweb
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


Witam, nie wiem w jaki sposób uaktywnić funkcję żeby za pomocą klawisza strzałki do góry moje pole zwiększyło się, gdzie tu jest błąd..z góry dziękuje
  1. <head>
  2.  
  3.  
  4. </head>
  5.  
  6. <body>
  7. function na(e){
  8. var bb=e.keyCode;
  9. var cc= document.getElementById('jeden');
  10. if (bb==38){
  11. cc.style.width="300px";}
  12. }
  13. </script>
  14. <div id="jeden" onkeydown="na(e)" style="width:100px;height:50px;background-color:red" ></div>
  15. </body>
  16. </html>
  17.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
werdan
post
Post #2





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


http://jsbin.com/IJuTecI/1/edit?html,js,output
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


dziękuje WERDAN:-)

No ale w takim razie dlaczego to nie działa?..

  1. <head>
  2.  
  3. <title>snake</title>
  4. </head>
  5.  
  6. <body>
  7. function na(e){
  8. var bb=e.keyCode;
  9. var cc= document.getElementById('jeden').style;
  10. if (bb==38){
  11.  
  12. cc.left=parseInt(cc.left)+300;}
  13. }
  14.  
  15. document.onkeydown = na;
  16. </script>
  17. <div id="jeden" style="width:100px;height:50px;background-color:red;margin-left:0px" ></div>
  18. </body>
  19. </html>
  20.  


Ten post edytował Mastersieciweb 7.01.2014, 13:23:47
Go to the top of the page
+Quote Post
werdan
post
Post #4





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


http://jsbin.com/IJuTecI/2/edit?html,js,output
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


a to jeszcze mam pytanko do tej funkcji, żeby po naciśnięciu klawisza już samo moje pole sie przemieszczało o zadaną wartość:

  1.  
  2. function na(e){
  3. bb=e.keyCode;
  4. cc= document.getElementById('jeden').style;
  5. if (bb==39){
  6. function ol(){
  7. cc.left=parseInt(cc.left)+10+"px";
  8. var d=setTimeout("ol();",100);
  9. }
  10. return ol();
  11. }
  12. d=document.onkeydown = na;
  13.  
  14.  


Ten post edytował Mastersieciweb 7.01.2014, 14:08:47
Go to the top of the page
+Quote Post
werdan
post
Post #6





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


http://jsbin.com/IJuTecI/3/edit?html,js,output

(IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #7





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


ale jaja:-) dziękuje, w razie W bede pytal dalej:-)

jeszcze pytanko mam, dlaczego nie tworzy mi ta funkcja nowego diva.. jesli warunek jest spełniony

  1. function ol4(){
  2. cc.top=parseInt(cc.top)-50+"px";
  3. if(parseInt(cc.top)<0){
  4. cc.top=parseInt(cc.top)+500+"px";;}
  5. if(parseInt(cc.top)>500){
  6. cc.top=parseInt(cc.top)-500+"px";;}
  7. if((parseInt(cc.left)==parseInt(cc2.left))&&(parseInt(cc.top)==parseInt(cc2.top))){
  8. cc2.left=i+"px";
  9. cc2.top=ii+"px";
  10. var div1 = document.createElement('div');
  11. div1.style.width="50px";
  12. div1.style.height="50px";
  13. div1.style.color="yellow";
  14. div1.style.position="absolute";
  15. div1.style.left=parseInt(div1.style.left)+30+"px";
  16. div1.style.top=parseInt(div1.style.top)+30+"px";}
  17. }
Go to the top of the page
+Quote Post
werdan
post
Post #8





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


  1. document.body.appendChild(div1);


Element utworzyłes, ale go nigdzie nie podpiąłes. (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #9





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


mam jeszcze pytanie:-) jeśli nacisne ponownie klawisz ta funkcja przyspieszy mi poruszanie się mojego kwadratu a jak zrobić żeby ponowne naciśnięcie nie przyspieszało jeszcze bardziej tego przemieszczania się?(IMG:style_emoticons/default/wink.gif)


http://jsbin.com/IJuTecI/3/edit?html,js,output
Go to the top of the page
+Quote Post
werdan
post
Post #10





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


http://jsbin.com/IJuTecI/4/edit?html,js,output

(IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #11





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


spojrzalbys na ten kod?:-) badziewnie pewnie wyglada,moim zadaniem bylo zrobienie takiej gierki(snake) z tym że nie wiem czy tą metodą co robie jestem w stanie taki efekt uzyskać. Pomieszałem troche tego wszystkiego, przetestuj ten problem jak możesz, ewentualnie jakieś sugestie, poprawki, co mógłbym zrobić, bo zostaje kwestia jeszcze klonowania diva, ale nie mam zielonego pojęcia jak tu to umiejscowić itp..;-)

  1. <head>
  2. <meta charset=utf-8 />
  3. <title>snake2</title>
  4. </head>
  5.  
  6. <body>
  7. function na(e){
  8. bb=e.keyCode;
  9. cc= document.getElementById('jeden').style;
  10. cc2= document.getElementById('dwa').style;
  11. var i = 100*Math.round(5*(Math.random()));
  12. var ii = 100*Math.round(5*(Math.random()));
  13. var isMoving = false;
  14.  
  15. if (bb==39){
  16. if(!isMoving){
  17. isMoving = true;
  18. d1=setInterval(function(){ol();},500);
  19. }}else {clearInterval(d1);}
  20. if (bb==40){
  21. if(!isMoving){
  22. isMoving = true;
  23.  
  24. d2=setInterval(function(){ol2();},500);
  25. }}else {clearInterval(d2);}
  26. if (bb==37){
  27. if(!isMoving){
  28. isMoving = true;
  29.  
  30. d3=setInterval(function(){ol3();},500);
  31. }}else {clearInterval(d3);}
  32. if (bb==38){
  33. if(!isMoving){
  34. isMoving = true;
  35.  
  36. d4=setInterval(function(){ol4();},500);
  37. }} else {clearInterval(d4);}
  38.  
  39.  
  40.  
  41.  
  42. function ol(){
  43. cc.left=parseInt(cc.left)+50+"px";
  44.  
  45. if(parseInt(cc.left)>500){
  46. cc.left=parseInt(cc.left)-550+"px";;}
  47. if((parseInt(cc.left)==parseInt(cc2.left))&&(parseInt(cc.top)==parseInt(cc2.top))){
  48. cc2.left=i+"px";
  49. cc2.top=ii+"px";
  50. }
  51. }
  52.  
  53.  
  54.  
  55.  
  56. function ol2(){
  57. cc.top=parseInt(cc.top)+50+"px";
  58.  
  59. if(parseInt(cc.top)>500){
  60. cc.top=parseInt(cc.top)-550+"px";;}
  61. if((parseInt(cc.left)==parseInt(cc2.left))&&(parseInt(cc.top)==parseInt(cc2.top))){
  62. cc2.left=i+"px";
  63. cc2.top=ii+"px";
  64. }
  65. }
  66.  
  67.  
  68.  
  69. function ol3(){
  70.  
  71. cc.left=parseInt(cc.left)-50+"px";
  72.  
  73. if(parseInt(cc.left)<0){
  74. cc.left=parseInt(cc.left)+550+"px";;}
  75.  
  76. if((parseInt(cc.left)==parseInt(cc2.left))&&(parseInt(cc.top)==parseInt(cc2.top))){
  77. cc2.left=i+"px";
  78. cc2.top=ii+"px";}
  79. }
  80.  
  81.  
  82.  
  83.  
  84. function ol4(){
  85. cc.top=parseInt(cc.top)-50+"px";
  86. if(parseInt(cc.top)<0){
  87. cc.top=parseInt(cc.top)+550+"px";;}
  88.  
  89. if((parseInt(cc.left)==parseInt(cc2.left))&&(parseInt(cc.top)==parseInt(cc2.top))){
  90. cc2.left=i+"px";
  91. cc2.top=ii+"px";
  92.  
  93. }
  94. }
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101. }
  102.  
  103. d=document.onkeydown = na;
  104. </script>
  105. <div id="tlo" style="position:absolute;width:550px;height:550px;background-color:green;left:0px;top:0px;" ></div>
  106. <div id="jeden" style="position:absolute;width:50px;height:50px;background-color:red;left:0px;top:0px;" ></div>
  107. <div id="dwa" style="position:absolute;width:50px;height:50px;background-color:blue;left:100px;top:0px;" ></div>
  108.  
  109. </body>
  110. </html>
  111.  
  112.  
Go to the top of the page
+Quote Post
werdan
post
Post #12





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


  1. <head>
  2. <meta charset=utf-8 />
  3. <title>snake2</title>
  4. </head>
  5.  
  6. <body>
  7. function na(e) {
  8. bb = e.keyCode;
  9. cc = document.getElementById('jeden').style;
  10. cc2 = document.getElementById('dwa').style;
  11. var i = 100 * Math.round(5 * (Math.random()));
  12. var ii = 100 * Math.round(5 * (Math.random()));
  13. var isMoving = false;
  14.  
  15. if (bb == 39) {
  16. if (!isMoving) {
  17. isMoving = true;
  18. d1 = setInterval(function() {
  19. ol();
  20. }, 500);
  21. }
  22. } else {
  23. clearInterval(d1);
  24. }
  25. if (bb == 40) {
  26. if (!isMoving) {
  27. isMoving = true;
  28.  
  29. d2 = setInterval(function() {
  30. ol2();
  31. }, 500);
  32. }
  33. } else {
  34. clearInterval(d2);
  35. }
  36. if (bb == 37) {
  37. if (!isMoving) {
  38. isMoving = true;
  39.  
  40. d3 = setInterval(function() {
  41. ol3();
  42. }, 500);
  43. }
  44. } else {
  45. clearInterval(d3);
  46. }
  47. if (bb == 38) {
  48. if (!isMoving) {
  49. isMoving = true;
  50.  
  51. d4 = setInterval(function() {
  52. ol4();
  53. }, 500);
  54. }
  55. } else {
  56. clearInterval(d4);
  57. }
  58.  
  59.  
  60.  
  61.  
  62. function ol() {
  63. cc.left = parseInt(cc.left) + 50 + "px";
  64.  
  65. if (parseInt(cc.left) > 500) {
  66. cc.left = parseInt(cc.left) - 550 + "px";
  67. }
  68. if ((parseInt(cc.left) == parseInt(cc2.left)) && (parseInt(cc.top) == parseInt(cc2.top))) {
  69. cc2.left = i + "px";
  70. cc2.top = ii + "px";
  71. }
  72. }
  73.  
  74.  
  75.  
  76.  
  77. function ol2() {
  78. cc.top = parseInt(cc.top) + 50 + "px";
  79.  
  80. if (parseInt(cc.top) > 500) {
  81. cc.top = parseInt(cc.top) - 550 + "px";
  82. }
  83. if ((parseInt(cc.left) == parseInt(cc2.left)) && (parseInt(cc.top) == parseInt(cc2.top))) {
  84. cc2.left = i + "px";
  85. cc2.top = ii + "px";
  86. }
  87. }
  88.  
  89.  
  90.  
  91. function ol3() {
  92.  
  93. cc.left = parseInt(cc.left) - 50 + "px";
  94.  
  95. if (parseInt(cc.left) < 0) {
  96. cc.left = parseInt(cc.left) + 550 + "px";
  97. }
  98.  
  99. if ((parseInt(cc.left) == parseInt(cc2.left)) && (parseInt(cc.top) == parseInt(cc2.top))) {
  100. cc2.left = i + "px";
  101. cc2.top = ii + "px";
  102. }
  103. }
  104.  
  105.  
  106.  
  107.  
  108. function ol4() {
  109. cc.top = parseInt(cc.top) - 50 + "px";
  110. if (parseInt(cc.top) < 0) {
  111. cc.top = parseInt(cc.top) + 550 + "px";
  112. }
  113.  
  114. if ((parseInt(cc.left) == parseInt(cc2.left)) && (parseInt(cc.top) == parseInt(cc2.top))) {
  115. cc2.left = i + "px";
  116. cc2.top = ii + "px";
  117.  
  118. }
  119. }
  120. }
  121.  
  122. d = document.onkeydown = na;
  123. </script>
  124. <div id="tlo" style="position:absolute;width:550px;height:550px;background-color:green;left:0px;top:0px;" ></div>
  125. <div id="jeden" style="position:absolute;width:50px;height:50px;background-color:red;left:0px;top:0px;" ></div>
  126. <div id="dwa" style="position:absolute;width:50px;height:50px;background-color:blue;left:100px;top:0px;" ></div>
  127.  
  128. </body>
  129. </html>
  130.  
  131.  
  132.  



Dobrze Ci idzie. Wyglada jak wygląda. Coś tam poprawiłem, bo jakieś błedy były (średniki, nawias).
Troche dziwnie działa.
Jak daje np. w prawo to idzie w prawo i do góry, bo wczesniej szedł do góry.

Troche sie inaczej to robi. W grach zawsze jest loop (czyli petla która sie wykonuje np. 60x na sekunde). I to własnie w tej petli sterujemy graczem i innymi elementami. Klikając kursory ustawiamy przesuniecia X i Y, a potem w petli wykonujemy je. W petli tez należałoby zrobić zjadanie "obiektu" (ofiary). Jesli pozycja głowy weza jest taka sama jak ofiary, to ofiare usuwamy, tworzymy nowa, a weza wydłuzamy (IMG:style_emoticons/default/biggrin.gif) . Weza najlepiej trzymac w tablicy (IMG:style_emoticons/default/biggrin.gif)


U ciebie sa 4 loopy. Sprobuj zrobić 1 loop (setInterval), a w tych 4 funkcjach tylko ustawiać przesuniecia X i Y.

Go to the top of the page
+Quote Post
Mastersieciweb
post
Post #13





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 14.10.2013

Ostrzeżenie: (0%)
-----


nie wiem za bardzo w jaki sposób wykorzystac tutaj petle i przypisac kierunki..


a zalozmy ze wszystko jest do przyjecia tylko zostaje kwestia dodania klonu? ktory porusza sie jak nasz div, jest taki sam i dodajemy go w momencie (nalozenia)na niebieskiego.. tylko że nie wiem w jaki sposob zapisac ze klon ma miec doklanie taka sama pozycje jak div ruch wczesniej.. nie mam pojecia..

Ten post edytował Mastersieciweb 7.01.2014, 21:24:36
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 22:15