javascript - Dynamic object html - alternate between objects drawn by function on canvas and use range/slider to change pattern -


i'm writing web app using html,javascript,css.

i have made 2 dynamic functions, 1 draws triangles , other circles. when move slider creates pattern images drawn. when mouseclick on canvas changes triangles circles.

the problem after change triangles circles clicking on canvas , try move slider image goes original (triangles). can click on canvas change triangles circles cannot change click.

this want do:

1º - want click on canvas , change triangles circles , forth, alternate between figures click on canvas.

2º - after clicking on canvas alternate images - slider must change pattern created shown on canvas - , not go original unless click again on canvas.

i provide code bellow. hope can take it. time.

triangle_start after clicking on canvas changes circles after using slider change pattern - notice should still show circles , not go triangles still change pattern/modulation of figure.

<html> <head>     <meta charset="utf-8" />     <title>canvas</title>     <style>     .etiq1{font-family:verdana; font-size:15px;}     #screen, #vect{border: 1px solid #000000;background-color:#0000ff;}     input {text-align: right;}           </style>     <script>     var screen,vect,paint,pr;         function inicgraf(){             screen = document.getelementbyid("screen");             paint = screen.getcontext("2d");             pr=document.getelementbyid("pr");         }         function triangle(x,y,x1,y1,x2,y2,side,colorline,colorinside){             paint.strokestyle=colorline;             paint.linewidth=1;             paint.beginpath();             paint.moveto(x,y); paint.lineto(x1,y1); paint.lineto(x2,y2);             paint.closepath();             paint.fillstyle=colorinside; paint.fill(); paint.stroke();         }         function trianglefour(x,y,side){             triangle(x,y,(x+side),y,x+(side/2.0),y+(side/2.0),side,"#e6b569","#e6b569");             triangle(x+side,y,x+side,y+side,x+(side/2.0),y+(side/2.0),side,"#aa8d49","#aa8d49");             triangle(x+side,y+side,x,y+side,x+(side/2.0),y+(side/2.0),side,"#013d55","#013d55");             triangle(x,y+side,x,y,x+(side/2.0),y+(side/2.0),side,"#449779","#449779");         }         function patternfour(modul){             var i,j,tam=500/modul;               for(i=0;i<modul;i++){                 for(j=0;j<modul;j++){                     trianglefour(i*tam,j*tam,tam)                    }         }         }         function circscreen(x,y,radius,colorline,corfundo){             paint.linewidth=1; paint.strokestyle=colorline;             paint.fillstyle=corfundo;             paint.beginpath();             paint.arc(x,y,radius,0,2.0*math.pi);             paint.closepath();paint.fill();paint.stroke();                       }         function circscreenblue(x, y, side) {             var r1 = (side / 2.0),                 r2 = (((side / 2.0) * 80.0) / 100.0);                     circscreen(x + r1, y, r1, "#449779", "#449779");                     circscreen(x + r1, y, r2, "#013d55", "#013d55");         }         function circscreencream(x, y, side) {             var r1 = (side / 2.0),                 r2 = (((side / 2.0) * 80.0) / 100.0);                     circscreen(x, y + r1, r1, "#e6b569", "#e6b569");                     circscreen(x, y + r1, r2, "#aa8d49", "#aa8d49");         }         function patterncirc(modul) {             var i, j, tam = 500 / modul;               (j = modul; j >= 0; j--) {                 (i = 0; <= modul; i++) {                 circscreencream(i * tam, j * tam, tam);         }             (i = 0; <= modul; i++) {                 circscreenblue(i * tam, j * tam, tam);         }         }         }         function monitor(){             var cr;              cr=document.getelementbyid("cr");             pr.value=cr.value;         }      </script> </head> <body onload="patternfour(pr.value)">     <canvas id="screen" width="500" height="500" onclick="patterncirc(pr.value)"></canvas>         <input id="pr" size="1" value="4" min="1" max="30" />         <input id="cr" type="range" value="4" min="1" max="30" step="1" onchange="patternfour(pr.value)" onmousemove="monitor()"/>         </div>      <script>     inicgraf();     </script> </body> 

you can keep boolean value in variable , toggle each time click. use value determine function call. here tried leave of code as-is, , introduced iscirc, drawpattern , patterntoggle:

  function patterntoggle(value) {     iscirc = !iscirc;     drawpattern(value);   }    function drawpattern(value) {     if (iscirc) patterncirc(value);     else patternfour(value);   } 

you can run code inline below:

<html>  <head>      <meta charset="utf-8" />      <title>canvas</title>      <style>      .etiq1{font-family:verdana; font-size:15px;}      #screen, #vect{border: 1px solid #000000;background-color:#0000ff;}      input {text-align: right;}            </style>      <script>      var screen,vect,paint,pr,iscirc=false;          function inicgraf(){              screen = document.getelementbyid("screen");              paint = screen.getcontext("2d");              pr=document.getelementbyid("pr");          }          function triangle(x,y,x1,y1,x2,y2,side,colorline,colorinside){              paint.strokestyle=colorline;              paint.linewidth=1;              paint.beginpath();              paint.moveto(x,y); paint.lineto(x1,y1); paint.lineto(x2,y2);              paint.closepath();              paint.fillstyle=colorinside; paint.fill(); paint.stroke();          }          function trianglefour(x,y,side){              triangle(x,y,(x+side),y,x+(side/2.0),y+(side/2.0),side,"#e6b569","#e6b569");              triangle(x+side,y,x+side,y+side,x+(side/2.0),y+(side/2.0),side,"#aa8d49","#aa8d49");              triangle(x+side,y+side,x,y+side,x+(side/2.0),y+(side/2.0),side,"#013d55","#013d55");              triangle(x,y+side,x,y,x+(side/2.0),y+(side/2.0),side,"#449779","#449779");          }          function patternfour(modul){              var i,j,tam=500/modul;                for(i=0;i<modul;i++){                  for(j=0;j<modul;j++){                      trianglefour(i*tam,j*tam,tam)                     }          }          }          function circscreen(x,y,radius,colorline,corfundo){              paint.linewidth=1; paint.strokestyle=colorline;              paint.fillstyle=corfundo;              paint.beginpath();              paint.arc(x,y,radius,0,2.0*math.pi);              paint.closepath();paint.fill();paint.stroke();                        }          function circscreenblue(x, y, side) {              var r1 = (side / 2.0),                  r2 = (((side / 2.0) * 80.0) / 100.0);                      circscreen(x + r1, y, r1, "#449779", "#449779");                      circscreen(x + r1, y, r2, "#013d55", "#013d55");          }          function circscreencream(x, y, side) {              var r1 = (side / 2.0),                  r2 = (((side / 2.0) * 80.0) / 100.0);                      circscreen(x, y + r1, r1, "#e6b569", "#e6b569");                      circscreen(x, y + r1, r2, "#aa8d49", "#aa8d49");          }          function patterncirc(modul) {              var i, j, tam = 500 / modul;                (j = modul; j >= 0; j--) {                  (i = 0; <= modul; i++) {                  circscreencream(i * tam, j * tam, tam);          }              (i = 0; <= modul; i++) {                  circscreenblue(i * tam, j * tam, tam);          }          }          }          function monitor(){              var cr;               cr=document.getelementbyid("cr");              pr.value=cr.value;          }                function patterntoggle(value) {          iscirc = !iscirc;          drawpattern(value);        }                function drawpattern(value) {          if (iscirc) patterncirc(value);          else patternfour(value);        }                  </script>  </head>  <body onload="patternfour(pr.value)">      <canvas id="screen" width="500" height="500" onclick="patterntoggle(pr.value)"></canvas>          <input id="pr" size="1" value="4" min="1" max="30" />          <input id="cr" type="range" value="4" min="1" max="30" step="1" onchange="drawpattern(pr.value)" onmousemove="monitor()"/>      <script>      inicgraf();      </script>  </body>


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

css - Can I use the :after pseudo-element on an input field? -