| Flex 2 °³¹ß °¡À̵å > Flex ÇÁ·Î±×·¥ ¾ð¾îÀÇ »ç¿ë > À̺¥Æ®ÀÇ »ç¿ë > À̺¥Æ®ÀÇ ÀüÆÄ | |||
À̺¥Æ®ÀÇ ÀüÆÄ
À̺¥Æ®°¡ trigger µÇ¸é, Flex ´Â 3 °³ÀÇ ´Ü°è¿¡¼ event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ´Ü°èÀÇ ¼ø¼´Â ´ÙÀ½°ú °°ÀÌ µÇ¾î ÀÖ½À´Ï´Ù.
- ÃÖÃÊ·Î capther ´Ü°è
- ´ÙÀ½¿¡ Ÿ°Ù ´Ü°è
- ¸¶Áö¸·¿¡ ¹Ùºê ¸µ ´Ü°è
°¢ ´Ü°è¿¡ ÀÖ¾î, ³ëµå´Â À̺¥Æ®¿¡ ÀÀ´äÇÒ ±âȸ¸¦ ¾ò½À´Ï´Ù. ¿¹¸¦ µé¾î, À¯Àú°¡, VBox ÄÁÅ×À̳ʳ»ÀÇ Button ÄÁÆ®·ÑÀ» Ŭ¸¯Çß´Ù°í ÇÕ´Ï´Ù. capther ´Ü°è¿¡¼´Â, ·çÆ® ³ëµåÀÎ Application ¿ÀºêÁ§Æ®¿Í VBox ·Î, À̺¥Æ®¸¦ ó¸®ÇÏ´Â Listener°¡ ÀÖÀ»Áö ¾î¶³Áö°¡ È®Àε˴ϴÙ. ´ÙÀ½ÀÇ Å¸°Ù ´Ü°è¿¡¼´Â, Button ÀÇ Listener°¡ trigger µË´Ï´Ù. ¹Ùºê ¸µ ´Ü°è¿¡¼´Â, capther ´Ü°è¿Í´Â ¿ªÀÇ VBox °¡ ¾Õ, Application ¿ÀºêÁ§Æ®°¡ ÈĶó°í ÇÏ´Â ¼ø¼·Î, À̺¥Æ®¸¦ ó¸®ÇÒ ±âȸ°¡ ´Ù½Ã ÁÖ¾îÁý´Ï´Ù.
ActionScript 3.0 ¿¡¼´Â, Ÿ°Ù ³ëµå ¶Ç´Â À̺¥Æ® Ç÷οì(flow)ÀÇ ÀÓÀÇÀÇ ³ëµå·Î, event listener¸¦ µî·ÏÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ´Ù¸¸, ¸ðµç À̺¥Æ®°¡, À̺¥Æ® Ç÷οì(flow)ÀÇ 3 °³ÀÇ ´Ü°è ¸ðµÎ·Î 󸮵Ǵ °ÍÀº ¾Æ´Õ´Ï´Ù. ÀϺÎÀÇ Å¸ÀÔÀÇ À̺¥Æ®´Â Ÿ°Ù ³ëµå¿¡ Á÷Á¢ ¼ÛÃâ(Dispatch)µË´Ï´Ù. ÀÌ °æ¿ì, capther ´Ü°è¿Í ¹Ùºê ¸µ ´Ü°è´Â ½ºÅµ µË´Ï´Ù. ±×°ÍÀÌ ÃÖ»óÁ¤µµ ³ëµå·ÎºÎÅÍ ¼ÛÃâ(Dispatch)µÈ °ÍÀÌ ¾Æ´Ñ ÇÑ, ¾î´À À̺¥Æ®µµ capther ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´Ù¸¥ À̺¥Æ®¿¡¼´Â, Ç¥½Ã ¸®½ºÆ®¿¡ ¾ø´Â ¿ÀºêÁ§Æ®°¡ ´ë»óÀÌ µÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Socket Ŭ·¡½ºÀÇ ÀνºÅϽº¿¡ ¼ÛÃâ(Dispatch)µÈ À̺¥Æ® µîÀÔ´Ï´Ù. ÀÌ·¯ÇÑ À̺¥Æ® ¿ÀºêÁ§Æ®´Â, capther ´Ü°è ¶Ç´Â ¹Ùºê ¸µ ´Ü°è¸¦ °ÅÄ¡Áö ¾Ê°í , Ÿ°Ù ³ëµå¿¡ Á÷Á¢ Ç÷οì(flow) ÇÕ´Ï´Ù. ¶Ç, À̺¥Æ®°¡ À̺¥Æ® ¸ðµ¨¿¡ Ç÷οì(flow) ÇÒ ¶§¿¡, À̺¥Æ®¸¦ ĵ½½ÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î, ´Ù¸¥ ´Ü°è·Î ³ª¾Æ°¥ ¿¹Á¤ÀÇ À̺¥Æ®¸¦ Á¤ÁöÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº cancelable properties °¡ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì¸¸ °¡´ÉÇÕ´Ï´Ù.
capther ¹× ¹Ùºê ¸µÀº, Event ¿ÀºêÁ§Æ®°¡ Ç¥½Ã ¸®½ºÆ®ÀÇ ³ëµå°£À» À̵¿ÇÒ ¶§¿¡ ½ÇÇàµË´Ï´Ù. ºÎ¸ð·ÎºÎÅÍ ¾ÆÀÌ·Î À̵¿ÇÏ´Â °æ¿ì¿¡´Â capther°¡, ¾ÆÀ̷κÎÅÍ ºÎ¸ð·Î À̵¿ÇÏ´Â °æ¿ì¿¡´Â ¹Ùºê ¸µÀÌ ½ÇÇàµË´Ï´Ù. ÀÌ Ã³¸®´Â »ó¼Ó °èÃþ°ú´Â °ü°è ¾ø½À´Ï´Ù. Ÿ°Ù ´Ü°è¿¡ °¡¼¼ÇØ, capther ´Ü°è¿Í ¹Ùºê ¸µ ´Ü°èµµ °æ°úÇÒ ¼ö°¡ ÀÖ´Â °ÍÀº,DisplayObject ¿ÀºêÁ§Æ® (ÄÁÅ×À̳ʳª ÄÁÆ®·ÑµîÀÇ ºñÁÖ¾ó ¿ÀºêÁ§Æ®) »ÓÀÔ´Ï´Ù.
¸¶¿ì½º À̺¥Æ® ¹× Űº¸µå À̺¥Æ®´Â, ¹Ùºê ¸µ ´Ü°è¿¡¼¸¸ 󸮵˴ϴÙ. capther´Â ¾î´À À̺¥Æ®¿¡¼µµ °¡´ÉÇÕ´Ï´Ù¸¸, ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÏÁö ¾Ê´Â ÀÌ»ó DisplayObject ¿ÀºêÁ§Æ®´Â capther ´Ü°è¿¡¼´Â À̺¥Æ®¸¦ ¸´½¼ ÇÏÁö ¾Ê½À´Ï´Ù. Áï, µðÆúÆ®¿¡¼´Â capther´Â ¹«È¿°¡ µÇ¾î ÀÖ½À´Ï´Ù.
Validator ¿Í °°Àº ÆäÀ̽º·¹½ºÀ̺¥Æ®µð½ºÆÌü¿¡ ÀÇÇØ À̺¥Æ®°¡ ¼ÛÃâ(Dispatch)µÇ¸é, Ÿ°Ù ´Ü°èÀÇ Ã³¸®¸¸ÀÌ ½ÇÇàµË´Ï´Ù. À̰ÍÀº, Event ¿ÀºêÁ§Æ®¿¡ capther ¹× ¹Ùºê ¸µ ´ë»óÀÇ ºñÁÖ¾ó Ç¥½Ã ¸®½ºÆ®°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù.
target properties ¿Í currentTarget properties ¿¡ ´ëÇØ
¾î´À Event ¿ÀºêÁ§Æ®¿¡µµ, Event ¿ÀºêÁ§Æ®°¡ ÀüÆÄ ÇÁ·Î¼¼½ºÀÇ ¾î´À ´Ü°è¿¡ ÀÖ´ÂÁö¸¦ ÃßÀûÇϱâ À§ÇÑ target properties ¿Í currentTarget properties °¡ ÀÖ½À´Ï´Ù. target properties ´Â, À̺¥Æ®ÀÇ µð½ºÆÖÃĸ¦ ÂüÁ¶ÇÕ´Ï´Ù. currentTarget properties ´Â, event listener°¡ Á¸ÀçÇϰí ÀÖÀ»Áö ¾î¶³Áö°¡ ÇöÀç °Ë»çµÇ°í ÀÖ´Â ³ëµå¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
¾î´À ÄÄÆÛ³ÍÆ®·Î Listener¸¦ ±â¼úÇØ, MouseEvent.CLICK µîÀÇ ¸¶¿ì½º À̺¥Æ®¸¦ ó¸®ÇÏ´Â °æ¿ì,event.target properties ´Â ¹Ýµå½Ã ±× ÄÄÆÛ³ÍÆ®¸¦ ÂüÁ¶ÇÏÁö ¾Ê½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì´Â, label¸¦ Á¤ÀÇÇÏ´Â ¼ºê ÄÄÆÛ³ÍÆ® (Button ÄÁÆ®·ÑÀÇ UITextField µî)¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
Flash Player ´Â, ¸¶¿ì½º Æ÷ÀÎÅ;Ʒ¡¿¡ ÀÖ´Â ¿ÀºêÁ§Æ® °¡¿îµ¥, ¸Ç À§¿¡ ÀÖ´Â °ÍÀ¸·ÎºÎÅÍ À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)ÇÕ´Ï´Ù. ¾ÆÀÌ´Â ºÎ¸ðÀÇ Àü¸é¿¡ ÀÖ±â (À§ÇØ)¶§¹®¿¡, Button ÀÇ UITextField µî, ³»ºÎ ¼ºê ÄÄÆÛ³ÍÆ®·ÎºÎÅÍ À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)ÇÏ´Â Àϵµ ÀÖ½À´Ï´Ù.
event.target properties ´Â, °¨½ÃµÇ°í ÀÖ´Â ¿ÀºêÁ§Æ® (´ëºÎºÐÀÇ ¾îÇø®ÄÉÀ̼ǿ¡¼´Â Button ÄÁÆ®·ÑÀÇ click À̺¥Æ®¸¦ °¨½ÃÇϰí ÀÖ´Â)´Â ¾Æ´Ï°í, À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)ÇÑ ¿ÀºêÁ§Æ® (ÀÌ °æ¿ì´Â UITextField)·Î ¼³Á¤µË´Ï´Ù.
MouseEvent À̺¥Æ®´Â ģüÀÎÀ» ¹öºí ¿Ã¶ó°¡, ÀÓÀÇÀÇ Á¶»óÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̺¥Æ®°¡ ¹öºí ÇØµµ,event.target properties ÀÇ °ªÀº ¹Ù²îÁö ¾Ê½À´Ï´Ù (UITextField ÀΠä). ´Ù¸¸,event.currentTarget properties ÀÇ °ªÀº, °¢ ·¹º§·Î, À̺¥Æ®¸¦ ó¸®ÇÏ´Â Á¶»óÀ¸·Î ¼³Á¤µË´Ï´Ù. ÃÖÁ¾ÀûÀ¸·Î´Â,currentTarget °¡ Button °¡ µÇ¾î, Button ÄÁÆ®·ÑÀÇ event listener°¡ À̺¥Æ®¸¦ ó¸®ÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡,event.target properties ´Â ¾Æ´Ï°í, ´ÙÀ½°ú °°ÀÌ event.currentTarget properties ¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
<mx:Button label="OK" click="trace(event.currentTarget.label) "/>
ÀÌ °æ¿ì, Button À̺¥Æ®ÀÇ click event listener¿¡¼´Â,event.currentTarget properties ´Â Ç×»ó Button ¸¦ ÂüÁ¶ÇÕ´Ï´Ù. ±×¿¡ ´ëÇÑ event.target ´Â, À¯Àú°¡ Button ÄÁÆ®·ÑÀÇ ¾îµð¸¦ Ŭ¸¯Çß´ÂÁö¸¦ µû¶ó, Button ¶Ç´Â ±× UITextField °¡ µË´Ï´Ù.
capther ´Ü°è
capther ´Ü°è¿¡¼´Â, Ç¥½Ã ¸®½ºÆ®³»ÀÇ À̺¥Æ®ÀÇ Á¶»óÀ» °Ë»çÇØ, À̺¥Æ®ÀÇ Listener·Î¼ µî·ÏµÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ È®ÀÎÇÕ´Ï´Ù. °Ë»ç´Â Ç¥½Ã ¸®½ºÆ®³»ÀÇ ·çÆ® Á¶»óÀ¸·ÎºÎÅÍ ½ÃÀ۵Ǿî, Ÿ°ÙÀÇ Á÷Á¢ÀûÀÎ Á¶»ó±îÁö °è¼ÓµË´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, ·çÆ® Á¶»óÀº ½ºÅ×ÀÌÁö¿¡¼, ±× ¾Æ·¡°¡ SystemManager, ÇÑÃþ ´õ ±× ¾Æ·¡°¡ Application ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, Panel ÄÁÅ×À̳ʸ¦ °¡Áö´Â ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÖ¾î, Panel ÄÁÅ×ÀÌ³Ê ¼Ó¿¡ TitleWindow ÄÁÅ×À̳Ê, ÇÑÃþ ´õ TitleWindow ÄÁÅ×ÀÌ³Ê ¼Ó¿¡ Button ÄÁÆ®·ÑÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì, ±× ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
Application
Panel
TitleWindow
Button
Button ÄÁÆ®·ÑÀÇ click À̺¥Æ®¿¡ ´ëÇÑ Listener°¡ Á¸ÀçÇØ, capther°¡ À¯È¿ÇÑ °æ¿ì, capther ´Ü°è¿¡¼´Â ´ÙÀ½ÀÇ ¼ø¼°¡ ½ÇÇàµË´Ï´Ù.
- Application ÄÁÅ×À̳ʸ¦ Ã¼Å©ÇØ, click event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÑ´Ù
- Panel ÄÁÅ×À̳ʸ¦ Ã¼Å©ÇØ, click event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÑ´Ù
- TitleWindow ÄÁÅ×À̳ʸ¦ Ã¼Å©ÇØ, click event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÑ´Ù
capther ´Ü°è¿¡¼´Â, ÇöÀç Listener°¡ ºÒ·Á °¡°í ÀÖ´Â ³ëµå¿¡ ¸ÂÃß¾î Event ¿ÀºêÁ§Æ®ÀÇ currentTarget properties ÀÇ °ªÀÌ º¯°æµË´Ï´Ù. target properties ´Â, °è¼Ó À̺¥Æ®ÀÇ µð½ºÆÖÃĸ¦ ÂüÁ¶ÇÕ´Ï´Ù.
µðÆúÆ®¿¡¼´Â, ÄÁÅ×À̳ʴ capther ´Ü°è¿¡¼ ¹ÞÁö ¾Ê½À´Ï´Ù. use_capture ÆÄ¶ó¹ÌÅÍÀÇ µðÆúƮġ´Â false ÀÔ´Ï´Ù. capther ´Ü°è¿¡¼ Listener¸¦ Ãß°¡ÇÏ·Á¸é ,addEventListener() ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¶§¿¡,use_capture ÆÄ¶ó¹ÌÅ͸¦ true ·Î ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
myPanel.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler, true);
MXML ű׸¦ »ç¿ëÇØ ÀÎ ¶óÀÎÀ¸·Î event listener¸¦ Ãß°¡Çϸé, ÀÌ ÆÄ¶ó¹ÌÅÍ´Â false ·Î ¼³Á¤µË´Ï´Ù. ÀÌ °ªÀº ÀçÁ¤ÀÇ(override) ÇÒ ¼ö ¾ø½À´Ï´Ù.
use_capture ÆÄ¶ó¹ÌÅ͸¦ true ·Î ¼³Á¤ÇßÀ» °æ¿ì, Áï À̺¥Æ®°¡ capther ´Ü°è¿¡¼ ÀüÆÄ ÇÏ´Â °æ¿ì¿¡¼µµ, ±× À̺¥Æ®´Â ¹öºí °¡´ÉÇÕ´Ï´Ù¸¸, capther ´Ü°èÀÇ Listener´Â °Å±â¿¡ ÀÀ´äÇÏÁö ¾Ê½À´Ï´Ù. capther ´Ü°è¿Í ¹Ùºê ¸µ ´Ü°èÀÇ ¾çÂÊ ¸ðµÎ·Î À̺¥Æ®¸¦ ó¸®ÇÏ´Â °æ¿ì´Â,addEventListener() ¸¦ 2 ȸ, Áï use_capture ¸¦ true ·Î ¼³Á¤ÇØ 1 ȸ·Îfalse ·Î ¼³Á¤ÇØ 1 ȸ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
capther ´Ü°è°¡ »ç¿ëµÇ´Â °ÍÀº °ÅÀÇ ¾ø½À´Ï´Ù. ¶Ç capther ´Ü°è¸¦ »ç¿ëÇϸé, °è»ê ó¸®ÀÇ ºÎÇϰ¡ Ä¿Áý´Ï´Ù. capther¿Í´Â ¹Ý´ë·Î, ¹Ùºê ¸µÀº ºó¹øÇÏ°Ô ½ÇÇàµË´Ï´Ù.
Ÿ°Ù ´Ü°è
Ÿ°Ù ´Ü°è¿¡¼´Â, À̺¥Æ® µð½ºÆÖÃÄÀÇ Listener°¡ ºÒ·Á °©´Ï´Ù. Ç¥½Ã ¸®½ºÆ®»óÀÇ ´Ù¸¥ ³ëµå¿¡¼´Â, event listenerÀÇ À¯¹«°¡ È®ÀεÇÁö ¾Ê½À´Ï´Ù. Ÿ°Ù ´Ü°è¿¡¼´Â, Event ¿ÀºêÁ§Æ®ÀÇ currentTarget properties ¿Í target properties ÀÇ °ªÀº °°½À´Ï´Ù.
¹Ùºê ¸µ ´Ü°è
¹Ùºê ¸µ ´Ü°è¿¡¼´Â, À̺¥Æ®ÀÇ Á¶»óÀ» °Ë»çÇØ, event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÕ´Ï´Ù. °Ë»ç´Â µð½ºÆÖÃÄÀÇ Á÷Á¢ÀûÀÎ Á¶»óÀ¸·ÎºÎÅÍ ½ÃÀ۵Ǿî, Ç¥½Ã ¸®½ºÆ®¸¦ ·çÆ® Á¶»ó±îÁö °Å½½·¯ ¿Ã¶ó°©´Ï´Ù. À̰ÍÀº capther ´Ü°èÀÇ ¿ªÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, Panel ÄÁÅ×À̳ʸ¦ °¡Áö´Â ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÖ¾î, Panel ÄÁÅ×ÀÌ³Ê ¼Ó¿¡ TitleWindow ÄÁÅ×À̳Ê, ÇÑÃþ ´õ TitleWindow ÄÁÅ×ÀÌ³Ê ¼Ó¿¡ Button ÄÁÆ®·ÑÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì, ±× ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
Application
Panel
TitleWindow
Button
Button ÄÁÆ®·ÑÀÇ click À̺¥Æ®¿¡ ´ëÇÑ Listener°¡ Á¸ÀçÇØ, ¹Ùºê ¸µÀÌ À¯È¿ÇÑ °æ¿ì, ¹Ùºê ¸µ ´Ü°è¿¡¼´Â ´ÙÀ½ÀÇ ¼ø¼°¡ ½ÇÇàµË´Ï´Ù.
- TitleWindow ÄÁÅ×À̳ʸ¦ Ã¼Å©ÇØ, click event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÑ´Ù
- Panel ÄÁÅ×À̳ʸ¦ Ã¼Å©ÇØ, click event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÑ´Ù
- Application ÄÁÅ×À̳ʸ¦ Ã¼Å©ÇØ, click event listener°¡ Á¸ÀçÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÑ´Ù
À̺¥Æ®°¡ ¹öºí ÇÏ´Â °ÍÀº, À̺¥Æ®ÀÇ bubbles properties °¡ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì¸¸ÀÔ´Ï´Ù. ¹öºí ÇÏ´Â À̺¥Æ®·Î¼´Â, ¸¶¿ì½º À̺¥Æ®¿Í Űº¸µå À̺¥Æ®°¡ ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î, Flex ¿¡ ÀÇÇØ ¼ÛÃâ(Dispatch)µÇ´Â °í·¹º§ÀÇ À̺¥Æ®´Â ¹öºí ÇÏÁö ¾Ê½À´Ï´Ù. ¹öºí ÇÒ ¼ö ÀÖ´Â À̺¥Æ®¿¡´Â change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp µîÀÌ ÀÖ½À´Ï´Ù. ƯÁ¤ÀÇ À̺¥Æ®°¡ ¹öºí ÇÒÁö ¾î¶³Áö¸¦ È®ÀÎÇÏ·Á¸é , ¡¸Adobe Flex 2 ·¹ÆÛ·±½º °¡À̵塹ÀÇ À̺¥Æ®ÀÇ Ç׸ñÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
¹Ùºê ¸µ ´Ü°è¿¡¼´Â, ÇöÀç Listener°¡ ºÒ·Á °¡°í ÀÖ´Â ³ëµå¿¡ ¸ÂÃß¾î Event ¿ÀºêÁ§Æ®ÀÇ currentTarget properties ÀÇ °ªÀÌ º¯°æµË´Ï´Ù. target properties ´Â, °è¼Ó À̺¥Æ®ÀÇ µð½ºÆÖÃĸ¦ ÂüÁ¶ÇÕ´Ï´Ù.
event listener°¡ ºÒ·Á °¥ ¶§, ½ÇÁ¦·Î´Â Ç¥½Ã ¸®½ºÆ®ÀÇ ÇÏÀ§ÀÇ ¿ÀºêÁ§Æ®¿¡ ÀÇÇØ Event ¿ÀºêÁ§Æ®°¡ ¼ÛÃâ(Dispatch)µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)ÇÑ ¿ÀºêÁ§Æ® ±× ÀÚü°¡ target °¡ µË´Ï´Ù. À̺¥Æ®°¡ ÇöÀç ¹öºí Çϰí ÀÖ´Â ¿ÀºêÁ§Æ®°¡ currentTarget °¡ µË´Ï´Ù. ±× ¶§¹®¿¡, event listener·Î ÇöÀçÀÇ ¿ÀºêÁ§Æ®¸¦ ÂüÁ¶ÇÒ ¶§´Â, ÀϹÝÀûÀ¸·Î,target properties ´Â ¾Æ´Ï°í currentTarget properties ¸¦ »ç¿ëÇÕ´Ï´Ù.
event listener´Â, À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)ÇÏ´Â ¿ÀºêÁ§Æ®¿¡°Ô¸¸ µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Button ÄÁÆ®·ÑÀÌ ±× Áß¿¡ Æ÷ÇԵǾî ÀÖ¾ú´Ù°í ÇØµµ,click À̺¥Æ®¸¦ ¸´½¼ Çϱâ À§Çؼ Form ÄÁÅ×À̳ʸ¦ µî·ÏÇÒ ¼ö ¾ø½À´Ï´Ù. Form ÄÁÅ×À̳ʴ click À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)ÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ´Ù¸¸, Form ÄÁÅ×À̳ʴ mouseDown À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)Çϱâ À§ÇØ(¶§¹®¿¡), Form ÄÁÅ×ÀÌ³Ê Å±׷ΠmouseDown event listener¸¦ Ãß°¡ÇÏ´Â °ÍÀº °¡´ÉÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé, Button ÄÁÆ®·Ñ ¶Ç´Â Form ÄÁÅ×À̳ʰ¡ mouseDown À̺¥Æ®¸¦ ¹ÞÀ» ¶§¸¶´Ù event listener°¡ trigger µË´Ï´Ù.
useCapture properties ¸¦ true ·Î ¼³Á¤ÇßÀ» °æ¿ì, Áï À̺¥Æ®°¡ capther ´Ü°è¿¡¼ ÀüÆÄ ÇÏ´Â °æ¿ì´Â, ¹Ùºê ¸µÀÇ µðÆúÆ® ¼³Á¤¿¡ °ü°è¾øÀÌ, ±× À̺¥Æ®´Â ¹öºí ÇÏÁö ¾Ê½À´Ï´Ù. capther ´Ü°è¿Í ¹Ùºê ¸µ ´Ü°èÀÇ ¾çÂÊ ¸ðµÎ·Î À̺¥Æ®¸¦ ó¸®ÇÏ´Â °æ¿ì´Â,addEventListener() ¸¦ 2 ȸ, Áï useCapture ¸¦ true ·Î ¼³Á¤ÇØ 1 ȸ·Îfalse ·Î ¼³Á¤ÇØ 1 ȸ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
À̺¥Æ®´Â, Ç¥½Ã ¸®½ºÆ®ÀÇ Á¶»óÀÇ Ä£Ã¼Àθ¸À» ¹öºí ¿Ã¶ó°©´Ï´Ù. °°Àº ÄÁÅ×À̳ʳ»¿¡ Æ÷ÇԵǴ 2 °³ÀÇ Button ÄÁÆ®·ÑµîÀÇ ÇüÁ¦´Â, ¼·ÎÀÇ À̺¥Æ®¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù.
À̺¥Æ®ÀÇ ´Ü°èÀÇ °ËÃâ
Event ¿ÀºêÁ§Æ®ÀÇ eventPhase properties ¸¦ »ç¿ëÇØ, À̺¥Æ®°¡ ¾î´À ´Ü°è¿¡ ÀÖ´ÂÁö¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ properties ¿¡´Â, ´ÙÀ½ÀÇ Á¤¼öÀÇ ¾î´ÀÂÊÀ̵çÀ» ³ªÅ¸³»´Â Á¤¼ö°¡ Æ÷ÇԵǰí ÀÖ½À´Ï´Ù.
- 1 -- capther ´Ü°è (
CAPTURING_PHASE) - 2 -- Ÿ°Ù ´Ü°è (
AT_TARGET) - 3 -- ¹Ùºê ¸µ ´Ü°è (
BUBBLING_PHASE)
´ÙÀ½ÀÇ ¿¹¿¡¼´Â, ÇöÀçÀÇ ´Ü°è¿Í ÇöÀçÀÇ Å¸°Ù ID °¡ Ç¥½ÃµË´Ï´Ù.
private function determineState(event:MouseEvent) :void {
trace(event.eventPhase + ":" + event.currentTarget.id);
}
ÀüÆÄÀÇ Á¤Áö
°¢°¢ÀÇ ´Ü°è¿¡¼ Ç¥½Ã ¸®½ºÆ®³»ÀÇ À̵¿À» Á¤ÁöÇÏ·Á¸é , Event ¿ÀºêÁ§Æ®·Î ´ÙÀ½ÀÇ ¸î°³ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
Event ¿ÀºêÁ§Æ®ÀÇ À̺¥Æ® Ç÷οì(flow) 󸮸¦ Á¤ÁöÇÏ·Á¸é ,stopPropagation() ¸Þ¼Òµå ¶Ç´Â stopImmediatePropagation() ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù. À̰͵é 2 °³ÀÇ ¸Þ¼Òµå´Â °ÅÀÇ °°½À´Ï´Ù¸¸, ÇöÀçÀÇ ³ëµåÀÇ ³ª¸ÓÁöÀÇ event listener¸¦ ½ÇÇàÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¶ó°í ÇÏ´Â Á¡¸¸ÀÌ ´Ù¸¨´Ï´Ù. stopPropagation() ¸Þ¼Òµå¸¦ È£ÃâÇϸé, Event ¿ÀºêÁ§Æ®´Â ´ÙÀ½ÀÇ ³ëµå·Î À̵¿ÇÏÁö ¾Ê°Ô µË´Ï´Ù¸¸, ÇöÀçÀÇ ³ëµåÀÇ ´Ù¸¥ event listener´Â ¸ðµÎ ½ÇÇàµË´Ï´Ù.
stopImmediatePropagation() ¸Þ¼Òµå¸¦ È£ÃâÇØµµ Event ¿ÀºêÁ§Æ®´Â ´ÙÀ½ÀÇ ³ëµå·Î À̵¿ÇÏÁö ¾Ê°Ô µË´Ï´Ù¸¸, ÀÌ °æ¿ì´Â ÇöÀçÀÇ ³ëµåÀÇ ´Ù¸¥ event listener´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
´ÙÀ½ÀÇ ¿¹¿¡¼´Â, Panel ÄÁÅ×ÀÌ³Ê ¼Ó¿¡ TitleWindow ÄÁÅ×À̳ʸ¦ ÀÛ¼ºÇØ, ¾çÂÊ ¸ðµÎÀÇ ÄÁÅ×À̳ʸ¦ mouseDown À̺¥Æ®ÀÇ Listener·Î¼ µî·ÏÇϰí ÀÖ½À´Ï´Ù. ±× °á°ú, TitleWindow ÄÁÅ×À̳ʸ¦ Ŭ¸¯ÇßÀ» °æ¿ì,stopImmediatePropagation() ¸Þ¼ÒµåÀÇ È£ÃâÀ» Ãß°¡ÇÏÁö ¾Ê´Â ÇÑ,showAlert() ¸Þ¼Òµå°¡ 2 ȸ ºÒ·Á °©´Ï´Ù.
<? xml version="1. 0"? >
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="init(event) ">
<mx:Script><! [CDATA[
import mx.controls.Alert;
import flash.events.MouseEvent;
import mx.events.Event;
public function init(e:Event) {
p1.addEventListener(MouseEvent.MOUSE_DOWN, showAlert);
tw1.addEventListener(MouseEvent.MOUSE_DOWN, showAlert);
tw1.addEventListener(Event.CLOSE, closeWindow);
}
public function showAlert(e:Event) {
Alert.show("Alert! \n" + e.currentTarget + "\n" + e.eventPhase);
e.stopImmediatePropagation();
}
public function closeWindow(e:Event) {
p1.removeChild(tw1);
}
]]></mx:Script>
<mx:Panel id="p1" title="Panel 1">
<mx:TitleWindow id="tw1" width="300" height="300" showCloseButton="true"
title="Title Window 1">
<mx:Button label="Enter name"/>
<mx:TextArea id="ta1"/>
</mx:TitleWindow>
</mx:Panel>
</mx:Application>
·Ê
´ÙÀ½ÀÇ ¿¹¿¡¼´Â, Ÿ°ÙÀÌ À̺¥Æ®¸¦ ó¸®ÇÑ ÈÄ, ºÎ¸ð ÄÁÅ×À̳ÊÀÇ click Çڵ鷯¿¡ ÀÇÇØ, Ÿ°Ù ÄÁÆ®·ÑÀÌ ¹«È¿·Î ¼³Á¤µË´Ï´Ù. ÀÌ ¿¹´Â, º¹¼öÀÇ À̺¥Æ® (¸ðµç Ŭ¸¯)·Î 1 »ìÀÇ Listener (HBox ÄÁÅ×À̳ÊÀÇ Å¬¸¯)ÀÇ ³í¸®¸¦ ÀçÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.
<? xml version="1. 0"? >
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><! [CDATA[
public function disableControl(event:MouseEvent) :void {
event.currentTarget.enabled = false;
}
public function doSomething(event:MouseEvent) :void {
b1.label = "clicked";
ta1.text += "something wonderful happened";
}
public function doSomethingElse(event:MouseEvent) :void {
b2.label = "clicked";
ta1.text += "something wonderful happened again";
}
]]></mx:Script>
<mx:HBox height="50" click="disableControl(event) ">
<mx:Button id='b1' label="Click Me" click="doSomething(event) "/>
<mx:Button id='b2' label="Click Me" click="doSomethingElse(event) "/>
<mx:TextArea id="ta1"/>
</mx:HBox>
</mx:Application>
º¹¼öÀÇ Listener (¾ÆÀÌ ÄÁÆ®·Ñ ¸¶´Ù 1 °³¾¿)¸¦ ÁöÁ¤ÇÏ´Â ´ë½Å¿¡ Ä£ÄÁÆ®·Ñ·Î 1 »ìÀÇ Listener¸¦ ÁöÁ¤Çϸé, ÄÚµåÀÇ Çà¼ö°¡ ÁÙ¾îµé¾î, ¾îÇø®ÄÉÀ̼ÇÀÇ È¿À²ÀÌ Çâ»óÇÕ´Ï´Ù. addEventListener() ¸Þ¼ÒµåÀÇ È£Ãâ ȸ¼ö°¡ ÁÙ¾îµé¸é, ¾îÇø®ÄÉÀ̼ÇÀÇ ±âµ¿ ½Ã°£ÀÌ Âª¾ÆÁ®, ¸Þ¸ð¸®ÀÇ ¼Òºñ·®µµ Àû°Ô µË´Ï´Ù.
´ÙÀ½ÀÇ ¿¹¿¡¼´Â, ¸µÅ© ¸¶´Ù Listener¸¦ µî·ÏÇÏ´Â ´ë½Å¿¡, VBox ÄÁÅ×À̳ʿ¡ ´ëÇØ¼ 1 °³ÀÇ À̺¥Æ® Çڵ鷯¸¦ µî·ÏÇϰí ÀÖ½À´Ï´Ù. VBox ÄÁÅ×À̳ÊÀÇ ¾ÆÀÌ´Â ¸ðµÎ ÀÌ À̺¥Æ® Çڵ鷯¸¦ »ó¼Ó ¹Þ½À´Ï´Ù. Flex ´Â ¹öºí À̺¥Æ®ÀÇ Çڵ鷯¸¦ È£ÃâÇϱâ (À§ÇØ)¶§¹®¿¡,currentTarget properties ´Â ¾Æ´Ï°í target properties ¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ Çڵ鷯¿¡¼´Â,currentTarget properties ´Â VBox ÄÁÆ®·ÑÀ» ÂüÁ¶ÇØ,target properties ´Â ÇÊ¿äÇÑ label¸¦ °¡Áö´Â LinkButton ÄÁÆ®·ÑÀ» ÂüÁ¶ÇÕ´Ï´Ù.
<? xml version="1. 0"? >
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="createLinkListener() ">
<mx:Script><! [CDATA[
private function linkHandler(event:MouseEvent) :void {
var url:URLRequest = new URLRequest("http://finance.yahoo.com/q/
cq? d=v1&s=" + event.target.label);
navigateToURL(url);
}
private function createLinkListener() :void {
vb1.addEventListener(MouseEvent.CLICK, linkHandler);
}
]]></mx:Script>
<mx:VBox id="vb1">
<mx:LinkButton label="ADBE"/>
<mx:LinkButton label="GE"/>
<mx:LinkButton label="HD"/>
<mx:LinkButton label="IBM"/>
<mx:LinkButton label="INTC"/>
</mx:VBox>
</mx:Application>
