| ActionScript 3.0 ÀÇ ÇÁ·Î±×·¡¹Ö > Flash Player API > External API ÀÇ »ç¿ë > ¿¹ :ActiveX ÄÁÅ×À̳ʿ¡ ´ëÇÑ External API ÀÇ »ç¿ë | |||
¿¹ :ActiveX ÄÁÅ×À̳ʿ¡ ´ëÇÑ External API ÀÇ »ç¿ë
ÀÌ ¿¹´Â, External API ¸¦ »ç¿ëÇÑ, ActiveX ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ǰú ActionScript ¿ÍÀÇ »çÀÌÀÇ Åë½ÅÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ÀÌ ¿¹¿¡¼´Â, ActionScript ÄÚµå ¹× °°Àº SWF ÆÄÀÏÀ» Æ÷ÇÔÇØ Introvert IM ¸¦ ´Ù½Ã »ç¿ëÇϰí ÀÖ±â (À§ÇØ)¶§¹®¿¡, ActionScript ÀÇ External API ÀÇ »ç¿ë¿¡ ´ëÇØ¼´Â ¼³¸íÇÏÁö ¾Ê½À´Ï´Ù. Àü¼úÀÇ ¿¹¸¦ Àß ÀÌÇØÇØ µÎ¸é, ÀÌ ¿¹¸¦ ÀÌÇØÇϱ⠽¬¿öÁý´Ï´Ù.
ÀÌ ¿¹ÀÇ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀº, Microsoft Visual Studio . NET ¸¦ »ç¿ëÇØ C# ·Î ±â¼úµÇ°í ÀÖ½À´Ï´Ù. ¼³¸íÀÇ Áß½ÉÀº, ActiveX ÄÁÆ®·ÑÀ» »ç¿ëÇÑ External API ÀÇ Á¶ÀÛ ¹æ¹ýÀÔ´Ï´Ù. ÀÌ ¿¹´Â, ´ÙÀ½ ÀÏÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.
- Flash Player ActiveX ÄÁÆ®·ÑÀ» È£½ºÆÃ Çϰí ÀÖ´Â µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍÀÇ ActionScript ÇÔ¼öÀÇ È£Ãâ
- ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£ÃâÀÇ ¼ö½Å, ¹× ActiveX ÄÁÅ×À̳ʿ¡¼ÀÇ ±× ó¸®
- ActiveX ÄÁÅ×À̳ʿ¡ÀÇ ¸Þ¼¼Áö ¼Û½Å¿¡ Flash Player °¡ »ç¿ëÇÏ´Â ÇÁ·Ï½Ã Ŭ·¡½º¸¦ »ç¿ëÇÑ, Á÷·ÄÈ XML Æ÷¸ËÀÇ »ó¼¼ÇÑ ºñÇ¥½Ã
Introvert IM C# ÆÄÀÏÀº Samples/IntrovertIM_CSharp Æú´õ¿¡ ÀÖ½À´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº, ´ÙÀ½ÀÇ ÆÄÀÏ·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù.
|
ÆÄÀÏ |
¼³¸í |
|---|---|
|
AppForm.cs |
C# Windows Forms ÀÎÅÍÆäÀ̽º·Î ±¸¼ºµÇ´Â ¸ÞÀÎ ¾îÇø®ÄÉÀÌ¼Ç ÆÄÀÏ. |
|
bin/Debug/IntrovertIMApp.swf |
¾îÇø®ÄÉÀ̼ǿ¡ ·Îµå µÇ´Â SWF ÆÄÀÏ. |
|
ExternalInterfaceProxy/ExternalInterfaceProxy.cs |
External Interface ¿ÍÀÇ Åë½ÅÀ» À§ÇÑ ActiveX ÄÁÆ®·ÑÀÇ ·¡ÆÛ·Î¼ ±â´ÉÇϴ Ŭ·¡½º. ActionScript ¸¦ È£ÃâÇØ, ActionScript ·ÎºÎÅÍÀÇ È£ÃâÀ» ¼ö½ÅÇϱâ À§ÇÑ ¸ÞÄ«´ÏÁòÀ» Á¦°øÇÕ´Ï´Ù. |
|
ExternalInterfaceProxy/ExternalInterfaceSerializer.cs |
Flash Player ÀÇ XML Æ÷¸Ë ¸Þ¼¼Áö¸¦ . NET ¿ÀºêÁ§Æ®·Î º¯È¯ÇÏ´Â task ¸¦ ½ÇÇàÇϴ Ŭ·¡½º. |
|
ExternalInterfaceProxy/ExternalInterfaceEventArgs.cs |
ÀÌ ÆÄÀÏÀº, custom Deligate ¿Í À̺¥Æ® Àμö¶ó°í ÇÏ´Â 2 °³ÀÇ C# ŸÀÔ (Ŭ·¡½º)À» Á¤ÀÇÇÕ´Ï´Ù. À̰ÍÀº, ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£ÃâÀÇ Listener¸¦ ÅëÁöÇϱâ À§ÇØ(¶§¹®¿¡), ExternalInterfaceProxy Ŭ·¡½º¿¡¼ »ç¿ëµË´Ï´Ù. |
|
ExternalInterfaceProxy/ExternalInterfaceCall.cs |
ÀÌ Å¬·¡½º´Â, ÇÔ¼ö¸í°ú ÆÄ¶ó¹ÌÅÍÀÇ properties ¸¦ »ç¿ëÇØ, ActionScript ·ÎºÎÅÍ ActiveX ÄÁÅ×À̳ʿ¡ÀÇ ÇÔ¼ö È£ÃâÀ» ³ªÅ¸³»´Â °ª¿ÀºêÁ§Æ®ÀÔ´Ï´Ù. |
|
bin/Debug/IntrovertIMApp.swf |
¾îÇø®ÄÉÀ̼ǿ¡ ·Îµå µÇ´Â SWF ÆÄÀÏ. |
|
obj/AxInterop.ShockwaveFlashObjects.dll, obj/Interop.ShockwaveFlashObjects.dll |
Flash Player (Shockwave® Flash) ActiveX ÄÁÆ®·ÑÀÇ ¾×¼¼½º¿¡ ÇÊ¿äÇÑ Visual Studio . NET ¿¡ ÀÇÇØ, °ü¸® ÄÚµå·ÎºÎÅÍ ÀÛ¼ºµÈ ·¡ÆÛ ¾î¼Àºí¸®. |
ºÎ ÁÖÁ¦
Introvert IM C# ¾îÇø®ÄÉÀ̼ÇÀÇ °³¿ä
ÀÌ ¾îÇø®ÄÉÀ̼ǿ¹´Â, ¼·Î Åë½ÅÇÏ´Â 2 °³ÀÇ ÀνºÅÏÆ® ¸Þ¼¼Áö Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ (1 °³Àº SWF ÆÄÀϳ», ÀÌÁ¦(¹ú½á) 1 °³Àº Windows Forms ¿¡ Æ÷ÇÔ)À» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. À¯Àú ÀÎÅÍÆäÀ̽º¿¡´Â, Shockwave® Flash ActiveX ÄÁÆ®·ÑÀÇ ÀνºÅϽº°¡ Æ÷ÇԵǾî ActionScript IM Ŭ¶óÀÌ¾ðÆ®¸¦ Æ÷ÇÔÇÑ SWF ÆÄÀÏÀÌ ·Îµå µË´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º¿¡´Â, Windows Forms IM Ŭ¶óÀÌ¾ðÆ®¸¦ ±¸¼ºÇÏ´Â ¸î°³ÀÇ ÅØ½ºÆ® Çʵ嵵 Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. 1 °³Àº ¸Þ¼¼Áö ÀԷ¿ë Çʵå (MessageText)¿¡¼, ÀÌÁ¦(¹ú½á) 1 °³Àº Ŭ¶óÀÌ¾ðÆ®°£¿¡ ¼Û½ÅµÇ´Â ¸Þ¼¼ÁöÀÇ º¹Á¦ (Transcript)¸¦ Ç¥½ÃÇØ, Á¦ 3 ÀÇ Çʵå (Status)´Â SWF IM Ŭ¶óÀÌ¾ðÆ®·Î ¼³Á¤µÈ availability ½ºÅ×ÀÌÅͽº¸¦ Ç¥½ÃÇÕ´Ï´Ù.
Shockwave Flash ActiveX ÄÁÆ®·ÑÀÇ Æ÷ÇÔ
Shockwave Flash ActiveX ÄÁÆ®·ÑÀ» µ¶ÀÚÀûÀÎ Windows Forms ¾îÇø®ÄÉÀ̼ǿ¡ Æ÷ÇÔÇÏ·Á¸é , ÃÖÃÊ·Î ±×°ÍÀ» Microsoft Visual Studio Toolbox ¿¡ Ãß°¡ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÄÁÆ®·ÑÀ» Åø ¹Ú½º¿¡ Ãß°¡ÇÏ·Á¸é :
- Visual Studio Toolbox ¸¦ ¿±´Ï´Ù.
- Visual Studio 2003 ÀÇ [Windows Æû] ¼½¼Ç, ¶Ç´Â Visual Studio 2005 ÀÇ ÀÓÀÇÀÇ ¼½¼ÇÀ» ¿À¸¥ÂÊ Å¬¸¯ÇÕ´Ï´Ù. Visual Studio 2003 ¿¡¼´Â context menu·Î [Ç׸ñÀÇ Ãß°¡/»èÁ¦] ¸¦ ¼±ÅÃÇÕ´Ï´Ù. Visual Studio 2005 ¿¡¼´Â [Ç׸ñÀÇ ¼±ÅÃ...] (À»)¸¦ ¼±ÅÃÇÕ´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ,[Åø ¹Ú½ºÀÇ Ä¿½ºÅ͸¶ÀÌÁî] (2003) ¶Ç´Â [Åø ¹Ú½º Ç׸ñÀÇ ¼±ÅÃ] (2005) ´ÙÀÌ¾Ë·Î±× ¹Ú½º°¡ Ç¥½ÃµË´Ï´Ù.
- [COM ÄÄÆÛ³ÍÆ®] ÅÇÀ» ¼±ÅÃÇÕ´Ï´Ù. ÀÌ ÅÇ¿¡´Â, Flash Player ActiveX ÄÁÆ®·Ñ µî, ±× ÄÄÇ»ÅÍ¿¡ ÀÖ´Â ¸ðµç COM ÄÄÆÛ³ÍÆ®°¡ Ç¥½ÃµË´Ï´Ù.
- ½ºÅ©·Ñ ÇØ Shockwave Flash Object ¸¦ ã¾Æ, ¼±ÅÃÇÕ´Ï´Ù.
ÀÌ Ç׸ñÀÌ Ç¥½ÃµÇÁö ¾Ê´Â °æ¿ì´Â, ½Ã½ºÅÛ¿¡ Flash Player ActiveX °¡ ¼³Ä¡(Install) µÇ°í Àֵ簡 È®ÀÎÇØ ÁÖ¼¼¿ä.
ActionScript ·ÎºÎÅÍ ActiveX ÄÁÅ×À̳ʿ¡ÀÇ Åë½Å¿¡ ´ëÇØ
External API ¸¦ »ç¿ëÇÑ ActiveX ÄÁÅ×ÀÌ³Ê ¾îÇø®ÄÉÀ̼ǰúÀÇ Åë½ÅÀº, Web ºê¶ó¿ìÀú¿ÍÀÇ Åë½Å°ú °°°Ô µË´Ï´Ù¸¸, Å« Â÷À̰¡ 1 °³ ÀÖ½À´Ï´Ù. Àü¼úÇÑ °Íó·³, ActionScript °¡ Web ºê¶ó¿ìÀú¿Í Åë½ÅÇÏ´Â °æ¿ì, °³¹ßÀÚ°¡ °í·ÁÇϰí ÀÖ´Â ÇÑ, ÇÔ¼ö´Â Á÷Á¢ ºÒ·Á °©´Ï´Ù. ÇÔ¼öÀÇ È£Ãâ ¹æ¹ý°ú ÀÀ´ä ¹æ¹ýÀÇ ÀÚ¼¼ÇÑ °ÍÀº, Ç÷¹À̾¿¡ ¼ö¼öÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) Æ÷¸Ë µÇ¾î ºê¶ó¿ìÀú´Â ÀνĵÇÁö ¾Ê½À´Ï´Ù. ´Ù¸¸, ActiveX ÄÁÅ×ÀÌ³Ê ¾îÇø®ÄÉÀ̼ǰúÀÇ Åë½Å¿¡ External API °¡ »ç¿ëµÇ´Â °æ¿ì, Flash Player ´Â ¸Þ¼¼Áö (ÇÔ¼ö È£Ãâ ¹× ¹Ýȯ°ª)¸¦ ÀÖ´Â XML Æ÷¸ËÀ¸·Î ¾îÇø®ÄÉÀ̼ǿ¡ ¼Û½ÅÇØ, ÄÁÅ×ÀÌ³Ê ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍÀÇ ÇÔ¼ö È£Ãâ°ú ¹Ýȯ°ª¿¡ °°Àº XML Æ÷¸ËÀÌ »ç¿ëµÉ Çʿ䰡 ÀÖ½À´Ï´Ù. ActiveX ÄÁÅ×ÀÌ³Ê ¾îÇø®ÄÉÀ̼ÇÀÇ °³¹ßÀÚ´Â, ÀûÀýÇÑ Æ÷¸ËÀÇ ÇÔ¼ö È£Ãâ°ú ÀÀ´äÀ» ÀνÄÇØ, ÀÛ¼º °¡´ÉÇÑ Äڵ带 ÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
»ùÇÃÀÇ Introvert IM C# ¿¡´Â, ¸Þ¼¼ÁöÀÇ formatting ¹æÁöÀÇ °¡´ÉÇÑ Å¬·¡½º°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù¸¸, ActionScript ÇÔ¼öÀÇ È£Ãâ ¹× ActionScript ·ÎºÎÅÍÀÇ È£ÃâÀÇ ¼ö½Å½Ã´Â, Ç¥ÁØÀÇ µ¥ÀÌÅÍÇüÀ» »ç¿ëÇØ Á¶ÀÛÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ExternalInterfaceProxy Ŭ·¡½º¸¦ ´Ù¸¥ ÇïÆÛ Ŭ·¡½º¿Í Á¶ÇÕÇÏ´Â °÷ÀÇ ±â´ÉÀÌ Á¦°øµÇ¾î ÀÓÀÇÀÇ . NET ÇÁ·ÎÁ§Æ®·Î ÀçÀÌ¿ëÇÏ´Â °ÍÀ¸·Î External API ¿ÍÀÇ Åë½ÅÀÌ ¿ëÀÌÇÏ°Ô µË´Ï´Ù.
´ÙÀ½ÀÇ ÄÚµå´Â, ¸ÞÀÎ ¾îÇø®ÄÉÀÌ¼Ç Æû (AppForm.cs)À¸·ÎºÎÅÍ ÀοëÇÑ °ÍÀ¸·Î, ExternalInterfaceProxy Ŭ·¡½º¸¦ »ç¿ëÇØ ½ÇÇöµÈ ´Ü¼øÇÑ Á¶ÀÛÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.
public class AppForm : System.Windows.Forms.Form
{
...
private ExternalInterfaceProxy proxy;
...
public AppForm()
{
...
/* ÀÌ ¾îÇø®ÄÉÀ̼ÇÀ» µî·ÏÇÏ´Â °ÍÀ¸·Î, ÇÁ·Ï½Ã°¡ ActionScript ·ÎºÎÅÍÀÇ
È£ÃâÀ» ¼ö½ÅÇßÀ» ¶§¿¡ ÅëÁö¸¦ ¼ö½ÅÇÑ´Ù */
proxy = new ExternalInterfaceProxy(IntrovertIMApp);
proxy.ExternalInterfaceCall += new ExternalInterfaceCallEventHandler(proxy_ExternalInterfaceCall);
...
}
...
ÀÌ ¾îÇø®ÄÉÀ̼ǿ¡¼´Â,proxy ¶ó´Â À̸§ÀÇ ExternalInterfaceProxy ÀνºÅϽº°¡ ¼±¾ð ¹× ÀÛ¼ºµÇ¾î ±× ÂüÁ¶°¡ À¯Àú ÀÎÅÍÆäÀ̽ºÀÇ Shockwave Flash ActiveX ÄÁÆ®·Ñ¿¡°Ô °Ç³×Áý´Ï´Ù (IntrovertIMApp). ´ÙÀ½¿¡, ÇÁ·Ï½ÃÀÇ ExternalInterfaceCall À̺¥Æ®¸¦ ¼ö½ÅÇϱâ À§ÇÑ proxy_ExternalInterfaceCall() ¸Þ¼Òµå°¡, ÄÚµå·Î µî·ÏµË´Ï´Ù. ÀÌ À̺¥Æ®´Â, Flash Player ·ÎºÎÅÍ ÇÔ¼ö È£ÃâÀÌ ÀÖ¾úÀ» ¶§¿¡ ExternalInterfaceProxy Ŭ·¡½º¿¡ ÀÇÇØ ¼ÛÃâ(Dispatch)µË´Ï´Ù. ÀÌ À̺¥Æ®¿¡ÀÇ ¿¹¾à(subscribe)´Â, C# Äڵ尡 ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£ÃâÀ» ¼ö½ÅÇØ, ÀÀ´äÇÏ´Â ¹æ¹ýÀÌ µÇ¾î ÀÖ½À´Ï´Ù.
ActionScript ·ÎºÎÅÍ ÇÔ¼ö È£ÃâÀÌ ÀÖÀ¸¸é, ExternalInterfaceProxy ÀνºÅϽº (proxy)´Â ±× È£ÃâÀ» ¼ö½ÅÇØ, ±×°ÍÀ» XML Æ÷¸ËÀ¸·Î º¯È¯ÇÕ´Ï´Ù. ±×¸®°í, ÇÁ·Ï½ÃÀÇ ExternalInterfaceCall À̺¥Æ®ÀÇ Listener°¡ µÇ°í ÀÖ´Â ¿ÀºêÁ§Æ®¿¡ ÅëÁöÇÕ´Ï´Ù. AppForm Ŭ·¡½ºÀÇ °æ¿ì,proxy_ExternalInterfaceCall() ¸Þ¼Òµå¿¡¼´Â ´ÙÀ½°ú °°ÀÌ À̺¥Æ®°¡ 󸮵˴ϴÙ.
/// <summary>
/// SWF ·Î ActionScript ExternalInterface È£ÃâÀ» Çϸé,
/// ÇÁ·Ï½Ã·ÎºÎÅÍ ºÒ·Á °£´Ù
/// </summary>
private object proxy_ExternalInterfaceCall(object sender, ExternalInterfaceCallEventArgs e)
{
switch (e.FunctionCall.FunctionName)
{
case "isReady":
return isReady();
case "setSWFIsReady":
setSWFIsReady();
return null;
case "newMessage":
newMessage((string) e.FunctionCall.Arguments[0]);
return null;
case "statusChange":
statusChange();
return null;
default:
return null;
}
}
...
ÀÌ ¸Þ¼Òµå´Â ExternalInterfaceCallEventArgs ÀνºÅϽº¿¡°Ô °Ç³×Áý´Ï´Ù. ÀÌ ¿¹¿¡¼´Â ÀνºÅϽº¸íÀÌ e ÀÔ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÀÌ ¿ÀºêÁ§Æ®°¡ ExternalInterfaceCall Ŭ·¡½ºÀÇ ÀνºÅϽºÀÎ FunctionCall properties ¸¦ ÃëµæÇÕ´Ï´Ù.
ExternalInterfaceCall ÀνºÅϽº°¡, 2 °³ÀÇ properties ¸¦ °¡Áö´Â ´Ü¼øÇÑ °ª¿ÀºêÁ§Æ®ÀÔ´Ï´Ù. FunctionName properties ¿¡´Â, ActionScript ExternalInterface.Call() ¸í·É¹®(statement)·Î ÁöÁ¤µÈ ÇÔ¼ö¸íÀÌ Æ÷ÇԵǰí ÀÖ½À´Ï´Ù. ActionScript ¿¡ ¾î¶°ÇÑ ÆÄ¶ó¹ÌÅͰ¡ Ãß°¡µÇ¸é, ±× ÆÄ¶ó¹ÌÅÍ´Â ExternalInterfaceCall ¿ÀºêÁ§Æ®ÀÇ Arguments properties ¿¡ Æ÷ÇԵ˴ϴÙ. ÀÌ °æ¿ì, À̺¥Æ®¸¦ ó¸®ÇÏ´Â ¸Þ¼Òµå´Â, Æ®·¡ÇÈ ¸Å´ÏÀú¿Í °°ÀÌ ±â´ÉÇÏ´Â switch ¸í·É¹®(statement)ÀÔ´Ï´Ù. FunctionName properties ÀÇ °ª (e.FunctionCall.FunctionName)¿¡ ÀÇÇØ, AppForm Ŭ·¡½ºÀÇ ¾î´À ¸Þ¼Òµå°¡ ºÒ·Á °¥Áö°¡ Á¤ÇØÁý´Ï´Ù.
Àü¼úÀÇ ÄÚµåÀÇ switch ¸í·É¹®(statement)ÀÇ ºê·£Ä¡(branch)´Â, ÀϹÝÀûÀÎ ¸Þ¼Òµå È£Ã⠽󪸮¿À¸¦ ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¸ðµç ¸Þ¼Òµå´Â °ªÀ» ActionScript ¿¡ µ¹·ÁÁÙ±î (isReady() ¸Þ¼Òµå È£Ãâ µî),null ¸¦ µ¹·ÁÁÙ (´Ù¸¥ ¸Þ¼Òµå È£ÃâÀÇ °æ¿ì) Çʿ䰡 ÀÖ½À´Ï´Ù. ActionScript ·ÎºÎÅÍ °Ç³×¹ÞÀº ÆÄ¶ó¹ÌÅÍÀÇ ¾×¼¼½º´Â,newMessage() ¸Þ¼Òµå È£Ãâ¿¡ ³ªÅ¸³ª°í ÀÖ½À´Ï´Ù (Arguments ¹è¿ÀÇ Á¦ 1 ¿¤¸®¸ÕÆ®ÀÎ ÆÄ¶ó¹ÌÅÍ e.FunctionCall.Arguments[0] À¸·Î °Ç³×¹Þ½À´Ï´Ù).
ExternalInterfaceProxy Ŭ·¡½º¸¦ »ç¿ëÇÑ C# ·ÎºÎÅÍÀÇ ActionScript ÇÔ¼öÀÇ È£ÃâÀº, ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£ÃâÀÇ ¼ö½Åº¸´Ù ÈξÀ ´Ü¼øÇÕ´Ï´Ù. ActionScript ÇÔ¼ö¸¦ È£ÃâÇÏ·Á¸é , ´ÙÀ½°ú °°ÀÌ ExternalInterfaceProxy ÀνºÅϽºÀÇ Call() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
/// <summary>
/// [¼Û½Å] ¹öưÀÌ ¹Ð¸®¸é ºÒ·Á °¡
/// MessageText ÅØ½ºÆ® ÇʵåÀÇ °ªÀÌ ÆÄ¶ó¹ÌÅͷμ °Ç³×¹Þ´Â´Ù
/// </summary>
/// <param name="message">¼Û½ÅÇÏ´Â ¸Þ¼¼Áö </param>
private void sendMessage(string message)
{
if (swfReady)
{
...
// ActionScript ÀÇ newMessage ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù
proxy.Call("newMessage", message);
}
}
...
/// <summary>
/// ActionScript ÇÔ¼ö¸¦ È£ÃâÇØ ÇöÀçÀÇ "availability" ½ºÅ×ÀÌÅͽº¸¦
/// ÃëµæÇØ, ±×°ÍÀ» ÅØ½ºÆ® Çʵ忡 ±âÀÔÇÑ´Ù
/// </summary>
private void updateStatus()
{
Status.Text = (string) proxy.Call("getStatus");
}
...
}
ÀÌ ¿¹·Î ³ªÅ¸³ª°í ÀÖµµ·Ï(µíÀÌ), ExternalInterfaceProxy Ŭ·¡½ºÀÇ Call() ¸Þ¼Òµå´Â, ActionScript ·Î °Å±â¿¡ »ó´çÇÏ´Â ExternalInterface.Call() ¿¡ ¸Å¿ì ÀÚÁÖ(Àß) ´à¾Ò½À´Ï´Ù. Á¦ 1 ÆÄ¶ó¹ÌÅÍ´Â string·Î, È£ÃâÇÏ´Â ÇÔ¼öÀÇ À̸§ÀÌ µË´Ï´Ù. ±× ¿ÜÀÇ ÆÄ¶ó¹ÌÅÍ (¿©±â¿¡´Â ³ªÅ¸³ª°í ÀÖÁö ¾Ê½À´Ï´Ù)µµ ActionScript ÇÔ¼ö¿¡°Ô °Ç³×Áý´Ï´Ù. ActionScript ÇÔ¼ö·ÎºÎÅÍ °ªÀÌ µ¹·ÁÁÖ¾îÁ³À» °æ¿ì, ±× °ªÀº Call() ¸Þ¼Òµå·Î µ¹·ÁÁÖ¾îÁý´Ï´Ù (Àü¼úÀÇ ¿¹).
ExternalInterfaceProxy Ŭ·¡½ºÀÇ ³»ºÎ
ActiveX ÄÁÆ®·ÑÀÇ ÇÁ·Ï½Ã ·¡ÆÛ¸¦ »ç¿ëÇÏ´Â °ÍÀº ¹Ýµå½Ã Áß¿äÇÏÁö ¾Ê°í, µ¶ÀÚÀûÀÎ ÇÁ·Ï½Ã class (¿¹¸¦ µé¾î, ´Ù¸¥ ÇÁ·Î±×·¥ ¾ð¾î³ª ´Ù¸¥ Ç÷§Æû¿ë)¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÁ·Ï½ÃÀÇ ÀÛ¼º¿¡ ´ëÇØ¼´Â ¿©±â¼ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÕ´Ï´Ù¸¸, ÀÌ ¿¹¿¡ ÀÖ¾î¼ÀÇ ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ³»ºÎ 󸮸¦ ÀÌÇØÇÏ´Â °ÍÀº À¯ÀÍÇÕ´Ï´Ù.
Shockwave Flash ActiveX ÄÁÆ®·ÑÀÇ CallFunction() ¸Þ¼Òµå¸¦ »ç¿ëÇϸé, External API ¸¦ »ç¿ëÇØ ActiveX ÄÁÅ×À̳ʷκÎÅÍ ActionScript ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ ExternalInterfaceProxy Ŭ·¡½ºÀÇ Call() ¸Þ¼ÒµåÀÇ ÀϺδÂ, À̰ÍÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.
/* Shockwave Flash ActiveX ÄÁÆ®·ÑÀÇ "_flashControl" ·Î,
SWF ÀÇ ActionScript ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù */
string response = _flashControl.CallFunction(request);
ÀÌ ÄÚµå ºÎºÐ¿¡¼,_flashControl Àº Shockwave Flash ActiveX ÄÁÆ®·ÑÀÔ´Ï´Ù. ActionScript ÇÔ¼ö È£ÃâÀº,CallFunction() ¸Þ¼Òµå¸¦ »ç¿ëÇØ ÇàÇØÁý´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡´Â ÆÄ¶ó¹ÌÅͰ¡ 1 °³ ÀÖ¾î (ÀÌ ¿¹¿¡¼´Â request), ÀÌ ÆÄ¶ó¹ÌÅÍ´Â XML Æ÷¸Ë µÈ ÀνºÆ®·°¼ÇÀÌ Æ÷ÇÔµÈ stringÀÔ´Ï´Ù. ºÒ·Á °¡´Â ActionScript ÇÔ¼öÀÇ À̸§ ¹× ÀÓÀÇÀÇ ÆÄ¶ó¹ÌÅͰ¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ActionScript ·ÎºÎÅÍ µ¹·ÁÁÖ¾îÁø ¸ðµç °ªÀº XML Æ÷¸Ë string¿¡ encode µÇ¾îCallFunction() È£ÃâÀÇ ¹Ýȯ°ªÀ¸·Î¼ µ¹·Á º¸³»Áý´Ï´Ù. ÀÌ ¿¹¿¡¼´Â, ÀÌ XML string°¡ response º¯¼ö¿¡ Æ÷ÇԵ˴ϴÙ.
ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£ÃâÀÇ ¼ö½ÅÀº, ´Ü°èÀûÀÎ ¼ø¼·Î ÇàÇØÁý´Ï´Ù. ActionScript ·ÎºÎÅÍ ÇÔ¼ö È£ÃâÀÌ ÀÖÀ¸¸é, Shockwave Flash ActiveX ÄÁÆ®·ÑÀº FlashCall À̺¥Æ®¸¦ ¼ÛÃâ(Dispatch)Çϱâ À§ÇØ(¶§¹®¿¡), SWF ÆÄÀϷκÎÅÍÀÇ È£ÃâÀ» ¼ö½ÅÇϱâ À§ÇÑ class (ExternalInterfaceProxy Ŭ·¡½ºµî)¿¡¼´Â ±× À̺¥Æ®¿ëÀÇ Çڵ鷯¸¦ Á¤ÀÇÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. ExternalInterfaceProxy Ŭ·¡½º¿¡¼´Â, ÀÌ À̺¥Æ® Çڵ鷯 ÇÔ¼öÀÇ À̸§Àº _flashControl_FlashCall() ·Î, class constructor¡¡ ¡¡ ³»ÀÇ À̺¥Æ®¸¦ ±â´Ù¸®µµ·Ï(µíÀÌ) µî·ÏµÇ¾î ÀÖ½À´Ï´Ù.
private AxShockwaveFlash _flashControl;
public ExternalInterfaceProxy(AxShockwaveFlash flashControl)
{
_flashControl = flashControl;
_flashControl.FlashCall += new _IShockwaveFlashEvents_FlashCallEventHandler(_flashControl_FlashCall);
}
...
private void _flashControl_FlashCall(object sender, _IShockwaveFlashEvents_FlashCallEvent e)
{
/* À̺¥Æ® ¿ÀºêÁ§Æ®ÀÇ request properties ("e.request")¸¦ »ç¿ëÇØ
¾×¼ÇÀ» ½ÇÇàÇÑ´Ù */
...
/* °ªÀ» ActionScript ¿¡ µ¹·ÁÁØ´Ù
µ¹·ÁÁÖ¾îÁø °ªÀº, XML Æ÷¸Ë string·Î¼ encode ÇÒ Çʿ䰡 ÀÖ´Ù */
_flashControl.SetReturnValue(encodedResponse);
}
À̺¥Æ® ¿ÀºêÁ§Æ® (e)¿¡´Â request properties (e.request)°¡ ÀÖ¾î, ÀÌ properties ´Â ÇÔ¼ö¸íÀ̳ª ÆÄ¶ó¹ÌÅÍ µî, ÇÔ¼ö È£ÃâÇØ¿¡ °üÇÑ Á¤º¸°¡ XML Æ÷¸ËÀ¸·Î Æ÷ÇÔµÈ Ä³¸¯ÅÍ ¶óÀÎÀÌ µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ Á¤º¸¸¦ ÄÁÅ×À̳ʷΠ»ç¿ëÇϸé, ½ÇÇàÇÏ´Â Äڵ带 ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ExternalInterfaceProxy Ŭ·¡½º¿¡¼´Â, ¿ä±¸°¡ XML Æ÷¸Ëȵî ExternalInterfaceCall ¿ÀºêÁ§Æ®¿¡ º¯È¯µÇ¾î °°Àº Á¤º¸°¡ ¾×¼¼½º Çϱ⠽¬¿î Çü½Ä¿¡¼ Á¦°øµË´Ï´Ù. ActiveX ÄÁÆ®·ÑÀÇ SetReturnValue() ¸Þ¼Òµå¸¦ »ç¿ëÇϸé, ÇÔ¼öÀÇ °á°ú¸¦ ActionScript ÀÇ È£Ãâ Ãø¿¡ µ¹·ÁÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ìµµ, ¾òÀ» ¼ö ÀÖ´ø ÆÄ¶ó¹ÌÅ͸¦ External API ·Î »ç¿ëµÇ´Â XML Æ÷¸Ë¿¡ encode ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
External API ÀÇ XML Æ÷¸Ë
Àü¼ú°ú °°ÀÌ, Shockwave Flash ActiveX ¸¦ È£½ºÆ® ÇÏ´Â ¾îÇø®ÄÉÀ̼ǰú ActionScript ¿ÍÀÇ »çÀÌÀÇ Åë½Å¿¡¼´Â, ÇÔ¼ö È£Ãâ°ú °ªÀ» encode Çϱâ À§Çؼ Àü¿ëÀÇ XML Æ÷¸ËÀÌ »ç¿ëµË´Ï´Ù. »ùÇÃÀÇ Introvert IM C# ¿¡¼´Â, ExternalInterfaceProxy Ŭ·¡½º¿¡ ÀÇÇØ, ¾îÇø®ÄÉÀÌ¼Ç Æû³»ÀÇ ÄÚµå·Î ÀÌ Æ÷¸ËÀ» ¹«½ÃÇØ, °ªÀ» Á÷Á¢ Á¶ÀÛÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. À̰ÍÀ» ½ÇÇöÇϱâ (À§ÇØ)¶§¹®¿¡, ExternalInterfaceProxy Ŭ·¡½º¿¡¼´Â ExternalInterfaceSerializer Ŭ·¡½ºÀÇ ¸Þ¼Òµå¸¦ »ç¿ëÇØ, ½ÇÁ¦·Î XML ¸Þ¼¼Áö¸¦ . NET ¿ÀºêÁ§Æ®·Î º¯È¯Çϰí ÀÖ½À´Ï´Ù. ExternalInterfaceSerializer Ŭ·¡½º¿¡´Â, ´ÙÀ½ÀÇ 4 °³ÀÇ public ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.
EncodeInvoke()ÀμöÀÇ ÇÔ¼ö¸í°ú C# ArrayList ¸¦ ÀûÀýÇÑ XML Æ÷¸Ë¿¡ encode ÇÕ´Ï´Ù.EncodeResult()°á°úÄ¡¸¦ ÀûÀýÇÑ XML Æ÷¸Ë¿¡ encode ÇÕ´Ï´Ù.DecodeInvoke()ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£ÃâÀ» µðÄÚµåÇÕ´Ï´Ù. FlashCall À̺¥Æ® ¿ÀºêÁ§Æ®ÀÇrequestproperties ´ÂDecodeInvoke()¸Þ¼Òµå¿¡°Ô °Ç³×Á® ÀÌ ¸Þ¼Òµå·Î È£ÃâÀÌ ExternalInterfaceCall ¿ÀºêÁ§Æ®¿¡ º¯È¯µË´Ï´Ù.DecodeResult()ActionScript ÇÔ¼öÀÇ È£ÃâÀÇ °á°ú·Î¼ ¼ö½ÅÇÑ XML ¸¦ µðÄÚµåÇÕ´Ï´Ù.
External API ·Î »ç¿ëµÇ´Â XML Æ÷¸Ë¿¡´Â 2 °³ÀÇ ºÎºÐÀÌ ÀÖ½À´Ï´Ù. 1 °³ÀÇ Æ÷¸ËÀº, ÇÔ¼ö È£ÃâÀ» ³ªÅ¸³»±â À§Çؼ(¶§¹®¿¡) »ç¿ëµË´Ï´Ù. ÀÌÁ¦(¹ú½á) 1 °³ÀÇ Æ÷¸ËÀº °³°³ÀÇ °ªÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ÀÌ Æ÷¸ËÀº, ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅÍ ¹× ÇÔ¼öÀÇ ¹Ýȯ°ª¿¡ »ç¿ëµË´Ï´Ù. ÇÔ¼ö È£Ãâ¿ëÀÇ XML Æ÷¸ËÀº, ActionScript ¿ÍÀÇ »çÀÌÀÇ È£Ãâ¿¡ »ç¿ëµË´Ï´Ù. ActionScript ·ÎºÎÅÍÀÇ ÇÔ¼ö È£Ãâ¿¡ ´ëÇØ¼, Flash Player ´Â XML ¸¦ ÄÁÅ×À̳ʿ¡ °Ç³×ÁÝ´Ï´Ù. ÄÁÅ×À̳ʷκÎÅÍÀÇ È£Ãâ¿¡ ´ëÇØ¼´Â, Flash Player ´Â ÀÌ Æ÷¸ËÀ¸·Î XML string¸¦ °Ç³×ÁÖ´Â ÄÁÅ×ÀÌ³Ê ¾îÇø®ÄÉÀ̼ÇÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. ´ÙÀ½ÀÇ XML ´Â, XML Æ÷¸Ë µÈ ÇÔ¼ö È£ÃâÀÇ ¿¹¸¦ ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.
<invoke name="functionName" returntype="xml">
<arguments>
... (individual argument values)
</arguments>
</invoke>
·çÆ® ³ëµå´Â <invoke> ³ëµåÀÔ´Ï´Ù. ¿©±â¿¡´Â 2 °³ÀÇ ¼Ó¼ºÀÌ ÀÖ¾î,name ´Â ÇÔ¼ö È£ÃâÀÇ À̸§À» ³ªÅ¸³»,returntype ´Â Ç×»ó xml °¡ µË´Ï´Ù. ÇÔ¼ö È£Ãâ¿¡ ÆÄ¶ó¹ÌÅͰ¡ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì,<invoke> ³ëµå¿¡´Â <arguments> ÀÚ ³ëµå°¡ »ý±é´Ï´Ù. ÇÑÃþ ´õ ±× ÀÚ½Ä (child) ³ëµå´Â, ´ÙÀ½¿¡ ¼³¸íÇÏ´Â °³º°ÀÇ °ªÆ÷¸ËÀ» »ç¿ëÇØ Æ÷¸Ë µÈ ÆÄ¶ó¹ÌÅͰ¡ µË´Ï´Ù.
ÇÔ¼öÀÇ ÆÄ¶ó¹ÌÅͳª ÇÔ¼öÀÇ ¹Ýȯ°ªµîÀÇ °³°³ÀÇ °ªÀ¸·Î´Â, ½ÇÁ¦ÀÇ °ª¿¡ °¡¼¼ÇØ µ¥ÀÌÅÍÇü Á¤º¸¸¦ Æ÷ÇÔÇÑ formatting ½ºÅ´ÀÌ »ç¿ëµË´Ï´Ù.
|
ActionScript ÀÇ class ¶Ç´Â °ª |
C# ÀÇ class ¶Ç´Â °ª |
Æ÷¸Ë |
ÄÚ¸àÆ® |
|---|---|---|---|
|
null |
null |
<null/> |
|
|
Boolean |
bool true |
<true/> |
|
|
Boolean |
bool false |
<false/> |
|
|
String |
string |
<string>stringġ </string> |
|
|
Number, int, uint |
single, double, int, uint |
<number>27. 5</number>
<number>-12</number>
|
|
|
Array (¿¤¸®¸ÕÆ®´Â ÇüÅÂÀÇ È¥Àç°¡´É) |
ArrayList ³ª object[] µî, ¿¤¸®¸ÕÆ®ÀÇ ÇüÅÂÀÇ È¥Àç°¡ °¡´ÉÇÑ ÄÝ·º¼Ç |
<array>
</array>
|
|
|
Object |
string Ű ÷ºÎÀÇ HashTable µî, string Ű¿Í ¿ÀºêÁ§Æ®Ä¡°¡ ÀÖ´Â »çÀü |
<object>
</object>
|
|
|
±× ¿ÜÀÇ ºôÆ®ÀÎ class ¶Ç´Â custom Ŭ·¡½º |
|
<null/>
<object></object>
|
ActionScript ¿¡¼´Â ´Ù¸¥ ¿ÀºêÁ§Æ®°¡ null ¶Ç´Â emptyÀÇ ¿ÀºêÁ§Æ®·Î¼ encode µË´Ï´Ù. ¾î´À °æ¿ìµµ, ¸ðµç properties Ä¡°¡ ¾ø¾îÁý´Ï´Ù. |
