Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obrazek sie nie odbija..JS
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Mastersieciweb
Witam, chciałbym w JS zrobić funkcje która po naciśnięciu na przycisk 'włącz' wprawia w ruch obrazek który 'odbija' się od powiedzmy ściany którą podam w wilekości x i y w px.
Mój obrazek podąża w zadanym kierunku z tym że nie potrafi się odbić od ściany ;-) i nie moge dojść do tego dlaczego...w czym tkwi tutaj błąd.. dlaczego 'drga' obrazek zamiast się odbić i zmienić kierunek. oto cały kod:
-chcialem jeszcze zaznaczyc ze nie moge uzywac canvasu, chcialbym tylko w js to zrobic;-)
  1.  
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  4. <meta name="generator" content="PSPad editor, www.pspad.com">
  5. <title>rozdzial13</title>
  6. var the_timeout;
  7. function moveNumber(){
  8. var the_div,move_amount;
  9. the_div=window.document.all.numberOne.style;
  10. move_amount=1;
  11. move_amountt=1;
  12.  
  13. var kk=400;
  14.  
  15.  
  16. if(parseInt(the_div.left)>kk || parseInt(the_div.left)<0){
  17. move_amount=-move_amount;}
  18.  
  19. if(parseInt(the_div.top)>kk || parseInt(the_div.top)<0){
  20. move_amountt=-move_amountt;}
  21.  
  22.  
  23. the_div.left=parseInt(the_div.left)+move_amount;
  24. the_div.top=parseInt(the_div.top)+move_amountt;
  25.  
  26. the_timeout=setTimeout("moveNumber();",10);
  27. }
  28. </script>
  29. </head>
  30. <body>
  31. <div id="numberOne" style="position:absolute; top:150;left:100;z-index:-1">
  32. <img src="3333.png">
  33. </div>
  34. <form name="formm">
  35. <input type="button" onClick="the_timeout=
  36. setTimeout('moveNumber();',100); return false;" name="jeden" value="wlacz">
  37. <input type="button" onClick="clearTimeout(the_timeout);
  38. return false;" name="dwa" value="wylacz">
  39. </form>
  40. </body>
  41. </html>
  42.  
PrinceOfPersia
Cytat
od powiedzmy ściany którą podam w wilekości x i y w px.

nie podajesz w pikselach, bo zapomniałeś pododawać "px" na końcu.

Cytat
function moveNumber(){
var the_div,move_amount;

tak jak za to deklarowałeś, to move_amount jest zmienną lokalną, więc za każdym razie jak się odpala funkcja to się resetuje do wartości 1 (move_amount=1 ). move_amountt deklarujesz bez var (wychodzi na to, że robisz z niej zmienną globalną implicite, chociaż nie wiem na ile to poprawne jest składniowo), ale i tak ją resetujesz za każdym razem kiedy funkcja się odpala ( move_amountt=1;).

innymi słowy chciałbyś pewnie mieć 2 zmienne statyczne (jak w C++) a JavaScript ci to nie pozwala na to.

wywal deklaracje (var.....) i inicjalicje (move_amount = .....) move_amount i move_amount przed/poza funkcję moveNumber:
Kod
   var move_amount, move_amountt;
   move_amount=1;
   move_amountt=1;  
  function moveNumber(){ ................
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.