3-1-3.À̹ÌÁö ·Îµå

À̹ÌÁö´Â ¿ë·®ÀÌ Ä¿¼­ ·Îµå ¼Óµµ°¡ ´À¸®´Ù. À¥Àº À̹ÌÁö¿¡ ´ëÇؼ­ ºñµ¿±âÀûÀ¸·Î µ¿ÀÛÇϴµ¥ ¿ÏÀüÈ÷ ·ÎµåµÉ ¶§±îÁö ±â´Ù¸®Áö ¾Ê°í À¥ ÆäÀÌÁö¸¦ ÀÏ´Ü Ç¥½ÃÇÑ ÈÄ À̹ÌÁö´Â µû·Î Àд´Ù. ±×·¡¼­ À̹ÌÁö¸¦ ÀÐÀº Á÷ÈÄ ¹Ù·Î Ãâ·ÂÇϸé Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.

 

function draw() {

     var img = new Image();

     img.src="munjangdae.jpg"

     ctx.drawImage(img, 50, 0);

}

 

src¿¡ ÆÄÀÏ À̸§À» ´ëÀÔÇÑ´Ù°í Çؼ­ Áï½Ã À̹ÌÁö¸¦ ÀÐ¾î ¿À´Â °ÍÀº ¾Æ´Ï¸ç ÀÐÀ¸¶ó´Â Ç¥½Ã¸¸ ÇØ ³õ°í ´ÙÀ½ ¸í·ÉÀ» ¼öÇàÇÑ´Ù. ±×·¯´Ù º¸´Ï drawImage ¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§´Â ¾ÆÁ÷ À̹ÌÁö°¡ ´Ù ÀÐÈ÷Áö ¾ÊÀº »óÅÂÀ̸ç Ãâ·ÂÀº ½ÇÆÐÇÑ´Ù. ·ÎÄÿ¡¼­ ÀÌ ¿¹Á¦¸¦ Å×½ºÆ®Çϸé ÄÄÇ»ÅÍ ¼Óµµ°¡ ¿ö³« »¡¶ó ¼º°øÇÏ´Â °æ¿ìµµ ÀÖÁö¸¸ ¿ø°ÝÁöÀÇ À¥ ¼­¹ö¿¡¼­ ¹ÞÀ» ¶§´Â ½ÇÆÐÇÒ È®·üÀÌ ³ô´Ù.

±×·¡¼­ À̹ÌÁö¸¦ ÀÐÀº ÈÄ ¹Ù·Î Ãâ·ÂÇÏÁö ¾Ê°í À̹ÌÁö ·Îµå°¡ ¿Ï·áµÈ Á÷ÈÄÀÎ onload À̺¥Æ®¿¡ Ãâ·Â Äڵ带 ÀÛ¼ºÇÏ´Â °ÍÀÌ Á¤»óÀûÀÌ´Ù. Áö±Ý±îÁö ¿ì¸®´Â ÀÌ ¹æ½ÄÀ¸·Î À̹ÌÁö¸¦ Ãâ·ÂÇß´Ù. ±×·¸´Ù¸é À̹ÌÁö°¡ 2°³ÀÎ °æ¿ì´Â ¾î¶»°Ô ÇÒ±î? µÑ ´Ù ·Îµå ¿Ï·áµÇ¾î¾ß Ãâ·Â °¡´ÉÇϹǷΠonload À̺¥Æ®¸¦ ÁßøÇØ¾ß ÇÑ´Ù.

 

imageload.html

function draw() {

     var img = new Image();

     img.src="munjangdae.jpg";

     img.onload = function() {

         ctx.drawImage(img, 50, 0);

        

         var img2 = new Image();

         img2.src="rose.png";

         img2.onload = function() {        

              ctx.drawImage(img2, 100, 0);     

         }

     }

}

 

¹®Àå´ë À§¿¡ Àå¹Ì À̹ÌÁö¸¦ °ãÃļ­ Ãâ·ÂÇß´Ù. ¹®Àå´ëÀÇ onload ¿¡¼­ ¹®Àå´ë¸¦ ¸ÕÀú Ãâ·ÂÇÏ°í Àå¹Ì À̹ÌÁö¸¦ Àд´Ù. Àå¹Ì À̹ÌÁöµµ À̺¥Æ®¸¦ ±â´Ù·Á¾ß ÇϹǷΠ¿ª½Ã onload¿¡¼­ Ãâ·ÂÇÑ´Ù.

µÑ Áß Çϳª¶óµµ ·ÎµåµÇÁö ¾ÊÀ¸¸é Á¦´ë·Î Ãâ·ÂµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¸´Ù¸é À̹ÌÁö°¡ 3°³³ª 4°³ÀÎ °æ¿ì´Â ¾î¶»°Ô µÉ±î? ¸¶Âù°¡Áö·Î onload À̺¥Æ® ¾È¿¡¼­ ´Ù¸¥ À̹ÌÁöÀÇ onload¸¦ °è¼Ó ±â´Ù·Á¾ß ÇϹǷΠÁßøÀÌ ³Ê¹« ½ÉÇØÁú °ÍÀÌ´Ù. °ÔÀÓÀÇ °æ¿ì ¼ö¹é°³ÀÇ À̹ÌÁö¸¦ »ç¿ëÇϴµ¥ ÀÌ·± ½ÄÀ̶ó¸é ¾ðÁ¦ °ÔÀÓÀ» ½ÃÀÛÇϰڴ°¡?

ÀÚ¹Ù½ºÅ©¸³Æ®´Â µ¿±âÀûÀÎ À̹ÌÁö ·Îµå ¹æ¹ýÀ» Á¦°øÇÏÁö ¾ÊÀ¸¸ç ÄÄÆÄÀÏµÈ ½ÇÇà ÆÄÀÏÀÌ ¾Æ´Ï¹Ç·Î ½ÇÇà ÆÄÀÏ¿¡ À̹ÌÁö¸¦ ³»ÀåÇÒ ¼öµµ ¾ø´Ù. À̺¥Æ®´Â °¢°¢ µû·Î¿©¼­ ÀüºÎ ¼º°øÇß´ÂÁö ÀÏÀÏÀÌ Ã¼Å©ÇÏ´Â ¹æ¹ý¹Û¿¡ ¾ø´Ù. ´ÙÀ½ ¿¹Á¦´Â À̹ÌÁö ·Îµå¸¦ ´ë±âÇÏ´Â ±âÃÊÀûÀÎ ¹æ¹ýÀ» º¸¿© ÁØ´Ù.

 

imageload2.html

<!DOCTYPE html>

<head>

     <meta charset="utf-8">

     <title>imageload2</title>

     <style>

         canvas {border:5px solid magenta;}

     </style>

</head>

<body>

     <canvas id="canvas" width="400" height="200">

         ÀÌ ºê¶ó¿ìÀú´Â ĵ¹ö½º¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

     </canvas>

     <script>

         var canvas;

         var ctx;

         var loadcount = 0;

         var img = new Array(2);

         window.onload = function() {

              canvas = document.getElementById("canvas");

              if (canvas == null || canvas.getContext == null) return;

              ctx = canvas.getContext("2d");

              draw();

 

              img[0] = new Image();

              img[0].src="munjangdae.jpg";

              img[0].onload = function() {

                   loadcount++;

              }

              img[1] = new Image();

              img[1].src="rose.png";

              img[1].onload = function() {

                   loadcount++;

              }

             

              var timer = setInterval(function() {

                   if (loadcount == 2) {

                        clearInterval(timer);

                        draw();

                   }

              }, 100);

         }

        

         function draw() {

              if (loadcount != 2) {

                   ctx.font="30px arial";

                   ctx.fillText("·ÎµùÁß...", 100, 100);

              } else {

                   ctx.drawImage(img[0], 50, 0);

                   ctx.drawImage(img[1], 100, 0);       

              }

         }

     </script>

</body>

</html>

 

onload¿¡¼­ ÇÊ¿äÇÑ À̹ÌÁö¸¦ ·ÎµåÇ쵂 °¢ À̹ÌÁöÀÇ onload À̺¥Æ®¿¡¼­ ¼º°øÇÑ °³¼ö¸¦ Ä«¿îÆ®ÇÑ´Ù. ¸ðµÎ ¼º°øÇßÀ» ¶§ÀÇ À̺¥Æ®´Â µû·Î ³¯¶ó¿ÀÁö ¾ÊÀ¸¹Ç·Î ŸÀ̸Ӹ¦ µ¹·Á °¡¸ç ÀüºÎ ¼º°øÇß´ÂÁö Á¶»çÇÏ´Â ¹æ¹ý¹Û¿¡ ¾ø´Ù. ·Îµå¸¦ ¸í·ÉÇÑ ÈÄ 0.1ÃÊ °£°ÝÀ¸·Î ¼º°ø °³¼öÀÎ loadcount º¯¼ö¸¦ Á¡°ËÇØ º¸°í ÀÌ °ªÀÌ 2°¡ µÉ ¶§±îÁö °è¼Ó ´ë±âÇÑ´Ù.

draw¿¡¼­´Â loadcount°¡ 2°¡ ¾Æ´Ï¸é ·ÎµùÁßÀ̶ó´Â ¾È³» ¸Þ½ÃÁö¸¸ Ãâ·ÂÇÏ°í ¾Æ¹« °Íµµ ÇÏÁö ¾Ê´Â´Ù. ÇÊ¿äÇÑ À̹ÌÁö°¡ ÀÖ¾î¾ß ½ÇÇàÀ» ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ŸÀ̸ӿ¡¼­ loadcount°¡ 2°¡ µÇ¸é »õ·Î È­¸éÀ» ±×¸®¸ç ´õ ÀÌ»ó ´ë±âÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î ŸÀ̸Ӵ Á¦°ÅÇÑ´Ù. draw´Â À̶§ ºñ·Î¼Ò À̹ÌÁö¸¦ È­¸é¿¡ Ãâ·ÂÇÒ °ÍÀÌ´Ù.

À§ ¿¹Á¦´Â À̹ÌÁö ·Îµå¸¦ ´ë±âÇÏ´Â ¿ø·ÐÀûÀÎ ¹æ¹ýÀ» º¸¿© ÁÖÁö¸¸ ½ÇÁ¦ »ç¿ëÇϱ⿡´Â ºÒÆíÇÏ´Ù. ÀÌ Äڵ带 °´Ã¼ ÁöÇâÀûÀ¸·Î Àß °³¼±ÇÏ¿© ÆíÀǼºÀ» ³ô¿©¾ß ÇÑ´Ù. ·ÎµåÇÒ ´ë»óÀ» Å¥¿¡ µî·ÏÇÏ°í ŸÀ̸Ӵ ťÀÇ À̹ÌÁö¸¦ Çϳª¾¿ ·ÎµåÇÏ¸ç ·Îµå°¡ ¼º°øÇÒ ¶§¸¶´Ù ÇÁ·Î±×·¡½º ¹Ù³ª ¼ýÀÚ Ä«¿îÆ®¸¦ º¸¿© ÁÖ¾î »ç¿ëÀÚ°¡ Áö·çÇÏÁö ¾Êµµ·Ï ÇØ¾ß ÇÑ´Ù. ±× ¿Ü¿¡µµ ¿¡·¯ ó¸®¿Í ½ÇÆнÃÀÇ Àç½Ãµµ Äڵ嵵 ÀÛ¼ºÇØ¾ß ÇÑ´Ù.

ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾îÀÎ ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ ÇÊ¿äÇÑ À̹ÌÁö¸¦ ¿ÏÀüÈ÷ ·ÎµåÇÏ´Â °ÍÀº ½±Áö ¾Ê´Ù. ½ÇÁ¦·Î °ÔÀÓ À̹ÌÁö Áß Çϳª°¡ ´©¶ôµÇ¾î ½ÃÀÛÀ» ¸øÇÏ´Â °æ¿ìµµ Á¾Á¾ ÀÖ´Ù. ¿©·¯ °¡Áö ´Ù¸¥ ÇØ°áÃ¥µµ Àִµ¥ ´ÙÀ½ ¿¹Á¦´Â Äڵ忡¼­ ½Ç½Ã°£À¸·Î À̹ÌÁö¸¦ ÀÐ¾î ¿À´Â ´ë½Å HTML ÆäÀÌÁö¿¡ »ì¦ ¼û°Ü ³õÀº À̹ÌÁö¸¦ È°¿ëÇÑ´Ù.

 

imageload3.html

<!DOCTYPE html>

<head>

     <meta charset="utf-8">

     <title>imageload3</title>

     <style>

         canvas {border:5px solid magenta;}

     </style>

</head>

<body>

     <canvas id="canvas" width="400" height="200">

         ÀÌ ºê¶ó¿ìÀú´Â ĵ¹ö½º¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.

     </canvas>

     <div style="display:none">

         <img id="munjangdae" src="munjangdae.jpg">

     </div>

     <script>

         var canvas;

         var ctx;

         window.onload = function() {

              canvas = document.getElementById("canvas");

              if (canvas == null || canvas.getContext == null) return;

              ctx = canvas.getContext("2d");

              draw();

         }

        

         function draw() {

              var img = document.getElementById("munjangdae");

              ctx.drawImage(img, 50, 0);

         }

     </script>

</body>

</html>

 

body¾È¿¡ div ű׸¦ µÎ°í ÀÌ ¾È¿¡ À̹ÌÁö¸¦ ¹èÄ¡Ç쵂 ÀÌ À̹ÌÁö´Â ½ÇÇàÁß¿¡ ĵ¹ö½º¿¡¼­ »ç¿ëÇÒ °ÍÀ̹ǷΠÆäÀÌÁö¿¡ ³ªÅ¸³ª¼­´Â ¾ÈµÈ´Ù. divÀÇ display ¼Ó¼ºÀ» noneÀ¸·Î ÁöÁ¤ÇÏ¿© ¼û±ä´Ù. ¶Ç´Â hidden °øÅë ¼Ó¼ºÀ¸·Î ¼û±æ ¼öµµ ÀÖ´Ù. ±×·¯³ª visibility ¼Ó¼ºÀ¸·Î hiddenÀ¸·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀº À̹ÌÁö Å©±â¸¸Å­ ½ºÅ©·Ñ ¿µ¿ªÀÌ °è»êµÇ¹Ç·Î ÁÁÁö ¾Ê´Ù.

¼û°ÜÁø µðºñÀü¾È¿¡ À̹ÌÁö¸¦ ¹èÄ¡ÇØ ³õÀ¸¸é HTML ¹®¼­¸¦ ÀÐÀ» ¶§ ºê¶ó¿ìÀú°¡ À̹ÌÁö¸¦ ·ÎµåÇÒ °ÍÀÌ´Ù. µû¶ó¼­ window.onload À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§´Â ÀÌ¹Ì À̹ÌÁö°¡ ·ÎµåµÈ »óȲÀ̸ç À̺¥Æ®¸¦ ±â´Ù¸®Áö ¾Ê¾Æµµ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ½ºÅ©¸³Æ® Äڵ忡¼­ ¼û°ÜÁø À̹ÌÁö¸¦ ÂüÁ¶ÇØ¾ß ÇϹǷΠid¸¦ ¹Ýµå½Ã ÁÖ¾î¾ß ÇÑ´Ù. Äڵ忡¼­´Â documentÀÇ getElementById ¸Þ¼­µå·Î À̹ÌÁö¸¦ ÀÐ¾î »ç¿ëÇÑ´Ù.