createChildren() ¸Þ¼ÒµåÀÇ ±¸Çö

³»ºÎ¿¡ ´Ù¸¥ ÄÄÆÛ³ÍÆ®³ª ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ´Â ÄÄÆÛ³ÍÆ®´Â, "º¹ÇÕ ÄÄÆÛ³ÍÆ® " ·Î ºÒ¸³´Ï´Ù. ¿¹¸¦ µé¾î, Flex ComboBox ÄÁÆ®·ÑÀº, ComboBox ÀÇ ÅØ½ºÆ® area¸¦ Á¤ÀÇÇÏ´Â TextInput ÄÁÆ®·Ñ°ú ComboBox ÀÇ È­»ìÇ¥¸¦ Á¤ÀÇÇÏ´Â Button ÄÁÆ®·Ñ·ÎºÎÅÍ ±¸¼ºµË´Ï´Ù. ÄÄÆÛ³ÍÆ®´Â createChildren() ¸Þ¼Òµå¸¦ ±¸ÇöÇØ, ÄÄÆÛ³ÍÆ® ³»ºÎ¿¡ ÀÚ½Ä (child) ¿ÀºêÁ§Æ® (´Ù¸¥ ÄÄÆÛ³ÍÆ®µî)¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

createChildren() ¸Þ¼Òµå´Â, À¯Àú°¡ Á÷Á¢ È£ÃâÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó,addChild() ¸Þ¼ÒµåÀÇ È£ÃâÀÌ ¹ß»ýÇßÀ» °æ¿ì¿¡, Flex °¡ È£ÃâÇØ ÄÄÆÛ³ÍÆ®¸¦ ºÎ¸ð¿¡°Ô Ãß°¡ÇÕ´Ï´Ù. ¿©±â¼­ ÁÖÀÇÇÏ´Â Á¡Àº,createChildren() ¸Þ¼Òµå¿¡´Â, ¹«È¿È­ ¸Þ¼Òµå°¡ ¾ø´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. Áï, ÄÄÆÛ³ÍÆ®°¡ ºÎ¸ð¿¡°Ô Ãß°¡µÈ ÈÄ, ´Ù½Ã È£ÃâÇÒ Çʿ䰡 ¾ø´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.

¸¹Àº ÄÄÆÛ³ÍÆ®¿¡¼­´Â, ÄÄÆÛ³ÍÆ®ÀÇ ÁÖÀ§¿¡ °æ°è¼±À» Á¤ÀÇÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ÀÇ ¿¹ÀÇ °°°Ô, ¸î°³ÀÇ Flex ÄÁÅ×À̳ʴÂ,RectangularBorder Ŭ·¡½º¸¦ »ç¿ëÇØ ÄÁÅ×À̳ÊÀÇ ÁÖÀ§ÀÇ °æ°è¼± area¸¦ Á¤ÀÇÇÕ´Ï´Ù.

// °æ°è¼±ÀÇ º¯¼ö¸¦ Á¤ÀÇÇÑ´Ù
private var border:RectangularBorder;

override protected function createChildren() :void {
    super.createChildren();

    // °æ°è¼±À» ÀÛ¼ºÇÑ´Ù
    // ¾ÆÀ̸¦ ÀÛ¼ºÇϱâ Àü¿¡, ¾ÆÀ̰¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Å×½ºÆ®ÇÑ´Ù
    // À̰ÍÀº Çʼö´Â ¾Æ´ÏÁö¸¸, ¼­ºê Ŭ·¡½º°¡ ´Ù¸¥ ¾ÆÀ̸¦ ÀÛ¼ºÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ)
    // ÇÑ´Ù
    if (! border)
    {
            border = new RectangularBorder();
            addChild(border);
    }
}

RectangularBorder ¿ÀºêÁ§Æ®¸¦ ÄÄÆÛ³ÍÆ®¿¡ Ãß°¡Çϸé, RectangularBorder ¿ÀºêÁ§Æ®ÀÇ properties ¸¦ »ç¿ëÇØ °æ°è¼± areaÀÇ Æ¯Â¡À» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. Åë»óÀº,updateDisplayList() ¸Þ¼ÒµåÀÇ ÀçÁ¤ÀÇ(override)·Î °æ°è¼±À» º¯°æÇÕ´Ï´Ù.

ÀüÀÇ ¿¹·Î,createChildren() ¸Þ¼Òµå´Â,addChild() ¸Þ¼Òµå¸¦ È£ÃâÇØ, ÀÚ½Ä (child) ÄÄÆÛ³ÍÆ®¸¦ Ãß°¡Çϰí ÀÖ½À´Ï´Ù. ÀÚ½Ä (child) ¿ÀºêÁ§Æ® ¸¶´Ù,addChild() ¸Þ¼Òµå¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

´Ù¸¥ ¿¹¸¦ »ý°¢ÇØ º¾½Ã´Ù. Button ÄÁÆ®·Ñ°ú TextArea ÄÁÆ®·Ñ·Î ±¸¼ºµÇ´Â »õ·Î¿î ÄÄÆÛ³ÍÆ®¸¦ Á¤ÀÇÇÑ´Ù°í ÇÕ´Ï´Ù. Button ÄÁÆ®·Ñ·Î TextArea ÄÁÆ®·Ñ¿¡ À¯Àú°¡ ÀÔ·ÂÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¸¦ ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹¿¡¼­´Â, TextArea ÄÄÆÛ³ÍÆ®¿Í Button ÄÄÆÛ³ÍÆ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

// ÄÄÆÛ³ÍÆ®ÀÇ ¾ÆÀÌÀÇ 2 »ìÀÇ º¯¼ö¸¦ ¼±¾ðÇÑ´Ù
private var text_mc:TextArea;
private var mode_mc:Button;

override protected function createChildren() :void {

    // Super Ŭ·¡½ºÀÇ createChildren() ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù
    super.createChildren();
        
    // ¾ÆÀ̸¦ ÀÛ¼ºÇϱâ Àü¿¡, ¾ÆÀ̰¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Å×½ºÆ®ÇÑ´Ù
    if (! text_mc)     {
        text_mc = new TextArea();
        text_mc.explicitWidth = 80;
        text_mc.editable = false;
        text_mc.addEventListener("change", handleChangeEvent);
        // ÀÚ½Ä (child) ÄÄÆÛ³ÍÆ®¸¦ custom ÄÄÆÛ³ÍÆ®¿¡ Ãß°¡ÇÑ´Ù
        addChild(text_mc);
    }

    // ¾ÆÀ̸¦ ÀÛ¼ºÇϱâ Àü¿¡, ¾ÆÀ̰¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ Å×½ºÆ®ÇÑ´Ù
    if (! mode_mc)     {    
        mode_mc = new Button();
        mode_mc.label = "Toggle Editing";
        mode_mc.addEventListener("click", handleClickEvent);
        // ÀÚ½Ä (child) ÄÄÆÛ³ÍÆ®¸¦ custom ÄÄÆÛ³ÍÆ®¿¡ Ãß°¡ÇÑ´Ù
        addChild(mode_mc);
    }
}

ÀÌ ¿¹¿¡¼­´Â, Button ÄÁÆ®·Ñ°ú TextArea ÄÁÆ®·ÑÀ» ÀÛ¼º, ÃʱâÈ­ÇØ, event listener¸¦ µî·ÏÇϰí ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå·Î, ½ºÅ²À» ÀÚ½Ä (child) ÄÄÆÛ³ÍÆ®¿¡ Àû¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Àüü¿¡ ´ëÇØ¼­´Â,¿¹ :º¹ÇÕ ÄÄÆÛ³ÍÆ®ÀÇ ÀÛ¼º ÀÇ ¿¹¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.