Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie koloru i dodawanie do array
soliniak
post
Post #1





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

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


Mam taki oto kod i chciałbym żeby każdy z narysowanych pasków miał kolor o jeden stopień wyższy.
Próbowałem zrobić to w arrayu ale nie wiem jak wyodrębnić kolory... (uczę się (IMG:style_emoticons/default/wink.gif) )
Za pomoc z góry dziękuję (IMG:style_emoticons/default/wink.gif)

https://jsfiddle.net/ta2z06fq/

[JAVASCRIPT] pobierz, plaintext
  1. function rysuj(){
  2. draw();
  3. cooler();
  4. }
  5.  
  6. function draw(){
  7. var canvas = document.getElementById("canvas");
  8.  
  9. var ctx = canvas.getContext("2d");
  10. var rgb = 255;
  11. var rgb2 = 0;
  12. var rgb3 = 0;
  13. var rgbit = false;
  14. var rgbitmin = false;
  15. var rgb2it = false;
  16. var rgb2itmin = false;
  17. var rgb3it = false;
  18. var rgb3itmin = false;
  19. var speed = 2;
  20.  
  21. this.cooler = function(){
  22.  
  23. if (rgb == 255 && rgb2 === 0 && rgb3 === 0){
  24. rgb2it = true;
  25. }
  26. if(rgb2it === true){
  27. rgb2++;
  28. if(rgb2 >= 255){
  29. rgb2it = false;
  30. }
  31. }
  32.  
  33. if (rgb == 255 && rgb2 === 255 && rgb3 === 0){
  34. rgbitmin = true;
  35. }
  36. if(rgbitmin === true){
  37. --rgb;
  38. if(rgb <= 0){
  39. rgbitmin = false;
  40. }
  41. }
  42.  
  43. if (rgb === 0 && rgb2 == 255 && rgb3 === 0){
  44. rgb3it = true;
  45. }
  46. if(rgb3it === true){
  47. rgb3++;
  48. if(rgb3 >= 255){
  49. rgb3it = false;
  50. }
  51. }
  52.  
  53. if (rgb === 0 && rgb2 === 255 && rgb3 == 255){
  54. rgb2itmin = true;
  55. }
  56. if(rgb2itmin === true){
  57. --rgb2;
  58. if(rgb2 <= 0){
  59. rgb2itmin = false;
  60. }
  61. }
  62. if (rgb === 0 && rgb2 === 0 && rgb3 == 255){
  63. rgbit = true;
  64. }
  65. if(rgbit === true){
  66. rgb++;
  67. if(rgb >= 255){
  68. rgbit = false;
  69. }
  70. }
  71. if (rgb == 255 && rgb2 === 0 && rgb3 == 255){
  72. rgb3itmin = true;
  73. }
  74. if(rgb3itmin === true){
  75. --rgb3;
  76. if(rgb3 <= 0){
  77. rgb3itmin = false;
  78. }
  79. }
  80.  
  81. setTimeout(cooler, speed);
  82.  
  83. document.getElementById("r").innerHTML = rgb;
  84. document.getElementById("g").innerHTML = rgb2;
  85. document.getElementById("b").innerHTML = rgb3;
  86.  
  87. toto = [rgb, rgb2, rgb3];
  88. kolor = [];
  89. kolor.push("rgb(" + rgb + "," + rgb2 + "," + rgb3 + ")");
  90.  
  91. //ctx.fillStyle = "rgb("toto[0]+","+toto[1]+","+toto[2]+");";
  92. document.getElementById("kolor").style.background = "rgb(" + rgb + "," + rgb2 + "," + rgb3 + ")";
  93.  
  94. var a = 20;
  95. var rH = 70;
  96. var rX = 15;
  97.  
  98. for (i = 0; i < 10; i++){
  99. a += 20;
  100. ctx.fillStyle = kolor[i];
  101. ctx.fillRect(a, 10, rX, rH+i*2);
  102. }
  103.  
  104. };
  105.  
  106. }
  107.  
  108. rysuj();
[JAVASCRIPT] pobierz, plaintext






Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rafkon1990
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 9
Dołączył: 14.09.2016
Skąd: Śląskie

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


Zobacz ten kod.

Wypełniam tablicę kolor 10 elementami (w pierwszej pętli) i później z nich korzystam w drugiej pętli rysując prostokąty.

Kod
    function rysuj(){
        draw();
        cooler();
    }

    function draw(){
        var canvas = document.getElementById("canvas");
        
        var ctx = canvas.getContext("2d");
        var rgb = 255;
        var rgb2 = 0;
        var rgb3 = 0;
        var rgbit = false;
        var rgbitmin = false;
        var rgb2it = false;
        var rgb2itmin = false;
        var rgb3it = false;
        var rgb3itmin = false;
        var speed = 200;
        
        this.cooler = function(){
        kolor = [];
            for(j=0; j<10; j++){
                if (rgb == 255 && rgb2 === 0 && rgb3 === 0){
                    rgb2it = true;
                }
                if(rgb2it === true){
                    rgb2++;
                    if(rgb2 >= 255){
                        rgb2it = false;
                    }
                }
                
                if (rgb == 255 && rgb2 === 255 && rgb3 === 0){
                    rgbitmin = true;
                }
                if(rgbitmin === true){
                    --rgb;
                    if(rgb <= 0){
                        rgbitmin = false;
                    }
                }
                
                if (rgb === 0 && rgb2 == 255 &&  rgb3 === 0){
                    rgb3it = true;
                }
                if(rgb3it === true){
                    rgb3++;
                    if(rgb3 >= 255){
                        rgb3it = false;
                    }
                }
                
                if (rgb === 0 && rgb2 === 255 && rgb3 == 255){
                    rgb2itmin = true;
                }
                if(rgb2itmin === true){
                    --rgb2;
                    if(rgb2 <= 0){
                        rgb2itmin = false;
                    }
                }
                if (rgb === 0 && rgb2 === 0 &&  rgb3 == 255){
                    rgbit = true;
                }
                if(rgbit === true){
                    rgb++;
                    if(rgb >= 255){
                        rgbit = false;
                    }
                }
                if (rgb == 255 && rgb2 === 0 && rgb3 == 255){
                    rgb3itmin = true;
                }
                if(rgb3itmin === true){
                    --rgb3;
                    if(rgb3 <= 0){
                        rgb3itmin = false;
                    }
                }
                
                
                
                document.getElementById("r").innerHTML = rgb;
                document.getElementById("g").innerHTML = rgb2;
                document.getElementById("b").innerHTML = rgb3;
                
                
                kolor.push("rgb(" + rgb + "," + rgb2 + "," + rgb3 + ")");
            }
            
            document.getElementById("kolor").style.background = "rgb(" + rgb + "," + rgb2 + "," + rgb3 + ")";
            
            var a = 20;
            var rH = 70;
            var rX = 15;
            
            for (i = 0; i < 10; i++){
                a += 20;
                ctx.fillStyle = kolor[i];
                document.getElementById("rgb"+i).innerHTML = kolor[i];
                ctx.fillRect(a, 10, rX, rH+i*2);
            }
            
            setTimeout(cooler, speed);
            
        };
        
    }

    rysuj();


Odcienie różnią się o 1 wartość r/g/b zatem jest to prawie niezauważalne (zalecam zwiększenie różnicy do najmniej 5).

Ten post edytował rafkon1990 9.11.2016, 10:03:03
Go to the top of the page
+Quote Post

Posty w temacie


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: 30.12.2025 - 17:24