Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rysowanie rectfill i odejmowanie wartości x
soliniak
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A dlaczego miałby się zmniejszać skoro zamazałeś część canvas prostokątem o szerokości 100px?


--------------------
Go to the top of the page
+Quote Post
soliniak
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


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/

Ten post edytował soliniak 8.11.2016, 15:48:25
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Jeśli rysujesz mazakiem na kartce szeroką kreskę i potem wracasz po niej, to poprzednia się czyści?


--------------------
Go to the top of the page
+Quote Post
soliniak
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


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


Ten post edytował soliniak 8.11.2016, 16:16:19
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 21:45