Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rysowanie rectfill i odejmowanie wartości x
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
soliniak
Mam taki kod i proszę o wyjaśnienie czemu pozioma belka powiększa się bez problemu ale gdy "cx" osiągnie 100 to nie zaczyna się ona zmniejszać?

[JAVASCRIPT] pobierz, plaintext
  1. function draw(){
  2. an();
  3. doMove();
  4. }
  5.  
  6.  
  7. function an(){
  8. c = document.getElementById("myCanvas");
  9. c.width = Math.max(window.innerWidth, document.body.clientWidth) - 10;
  10. c.height = Math.max(window.innerHeight, document.body.clientHeight) - 800;
  11.  
  12. d = document.getElementById("test");
  13. e = document.getElementById("test2");
  14. ctx = c.getContext("2d");
  15. ctx.fillStyle = "blue";
  16.  
  17. x = 30;
  18. y = 80;
  19. cx = 0;
  20. cy = 15;
  21. tab = 100;
  22. cz = false;
  23.  
  24. this.doMove = function(){
  25. if(cz == true){
  26. cx -= 1;
  27. setTimeout(doMove,20);
  28. if (cx == 0) cz = false;
  29.  
  30. }else if(cz == false) {
  31. cx += 1;
  32. setTimeout(doMove,20);
  33. if(cx == tab) cz = true;
  34.  
  35. }
  36. //e.innerHTML = cx;
  37. ctx.fillRect(x, y, cx, cy);
  38. d.innerHTML= "x: " + cx + "<br /> y: " + cy;
  39.  
  40. }
  41. }
  42.  
  43. draw();
[JAVASCRIPT] pobierz, plaintext
trueblue
A dlaczego miałby się zmniejszać skoro zamazałeś część canvas prostokątem o szerokości 100px?
soliniak
No i chcę żeby ten prostokąt z powrotem wrócił do swoich wymiarów, a potem znowu powiększył i znowu zmniejszył itd.
Tutaj kod: https://jsfiddle.net/krhskvey/
trueblue
Jeśli rysujesz mazakiem na kartce szeroką kreskę i potem wracasz po niej, to poprzednia się czyści?
soliniak
No i ślicznie dziękuję za podpowiedź wink.gif chociaż nie wiedziałem o metodzie clearRect i trochę mi to zajęło wink.gif
Temat do zamknięcia wink.gif

Podrzucam rozwiązanie wink.gif

[JAVASCRIPT] pobierz, plaintext
  1. function draw(){
  2. an();
  3. doMove();
  4. }
  5.  
  6.  
  7. function an(){
  8. c = document.getElementById("myCanvas");
  9. c.width = Math.max(window.innerWidth, document.body.clientWidth) - 10;
  10. c.height = Math.max(window.innerHeight, document.body.clientHeight) - 800;
  11.  
  12. d = document.getElementById("test");
  13. e = document.getElementById("test2");
  14. ctx = c.getContext("2d");
  15. ctx.fillStyle = "blue";
  16.  
  17. x = 330;
  18. y = 80;
  19. cx = 10;
  20. cx2 = 0;
  21. cy = 15;
  22. tab = 100;
  23. cz = false;
  24.  
  25. this.doMove = function(){
  26. if(cz == true){
  27. --cx;
  28. --cx2;
  29. if(cx2 <= -tab){
  30. cx2 = 0;
  31. }
  32. ctx.clearRect(x+tab, y, cx2, cy);
  33. setTimeout(doMove,20);
  34. if (cx == 0) cz = false;
  35.  
  36. }else if(cz == false) {
  37. cx++;
  38. ctx.fillRect(x, y, cx, cy);
  39. setTimeout(doMove,20);
  40. if(cx >= tab) cz = true;
  41. }
  42. //e.innerHTML = cx2;
  43. d.innerHTML= "x: " + cx + "<br /> y: " + cy + "<br />cx: " +cx2;
  44. }
  45. }
  46.  
  47. draw();
[JAVASCRIPT] pobierz, plaintext
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.