Home | Login| Guest
¾×¼Ç½ºÅ©¸³Æ® | 2007-05-18 00:12:20
Hit : 174

Flash 8¿¡¼­ ExternalInterface »ç¿ëÇϱâ

±èÁ¤Çå

Macromedia Korea, User Interface Architect

¼Ò°³

¸¹Àº Ç÷¡½Ã À¥»çÀÌÆ®¿¡¼­ Ç÷¡½Ã ÀÚüÀûÀ¸·Î ÇØ°á ÇÒ ¼ö ¾ø´Â ºÎºÐµéÀ» ¼­¹ö»çÀ̵å ÇÁ·Î±×·¥ÀÇ µµ¿òÀ» ¹Þ¾Æ¼­ ÇØ°áÇÕ´Ï´Ù. ¼­¹ö»çÀ̵å ÇÁ·Î±×·¥ÀÇ µµ¿òÀ» ¹ÞÀ»·Á¸é Ç÷¡½Ã¿¡¼­ Javascript À» È£ÃâÀ» Çϰųª Javascript ¿¡¼­ Flash¸¦ È£ÃâÇÏ¿© Javscript ¿Í Flash °¡ ¼­·Î Åë½ÅÀ» ÇÏ¿© ¹®Á¦¸¦ ÇØ°á ÇÏ¿´½À´Ï´Ù. Flash mx2004 ¹öÀü±îÁö´Â Flash ¿¡¼­ getURL() ¶Ç´Â fscommand()·Î Javascript °ú Åë½Å ÇÏ¿´°í Javascript ¿¡¼­´Â SetVariable(), callFrame(), callLable() µîÀ» ÅëÇØ Flash¿Í Åë½ÅÀ» ÇÏ¿´½À´Ï´Ù.

Flash 8 ¿¡¼­´Â Flash ¿Í ¿ÜºÎ ÇÁ·Î±×·¥°£¿¡ Á÷Á¢ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÏ´Â ¿ÜºÎ API(ÀÀ¿ë ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º)ÀÎ ExternalInterface Ŭ·¡½º°¡ »õ·ÎÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù. ´ÙÀ½¿¡¼­´Â ExternalInterface Ŭ·¡½º¿¡ ´ëÇØ¼­ ÀÚ¼¼È÷ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

¿ä±¸ »çÇ×

ÀÌ ÀÚ½À °úÁ¤À» ¼öÇàÇÒ·Á¸é ´ÙÀ½°ú °°Àº ¼ÒÇÁÆ®¿þ¾î¿Í ÆÄÀÏÀÌ ÇÊ¿äÇÕ´Ï´Ù.

Macromedia Flash Professional 8

ÀÚ½À¼­ ¹× »ùÇà ÆÄÀÏ


ÇÊ¿äÇÑ ¹è°æ Áö½Ä

JavaScript¿¡ ´ëÇÑ »çÀüÁö½ÄÀÌ ÇÊ¿äÇÕ´Ï´Ù.

Flash 8 Ç÷¡À̾ º¯°æµÈ º¸¾È »çÇ×

Ç÷¡½Ã Ç÷¡À̾î 8 ¿¡¼­´Â Ç÷¡À̾î 7 ¹öÀü°ú ´Ù¸¥ ´ÙÀ½°ú °°Àº Á¦ÇÑ »çÇ×ÀÌ ÀÖ½À´Ï´Ù.

  • ·ÎÄà »÷µå¹Ú½º

    ±âº»ÀûÀ¸·Î ·ÎÄà SWF´Â ´õ ÀÌ»ó ÀÎÅͳݿ¡ ¿¬°áÇϰųª, HTTP Åë½ÅÀ» ¼öÇàÇϰųª ·ÎÄà HTML ÆÄÀϰú Åë½ÅÇÒ ¼ö ¾ø½À´Ï´Ù. SWF 7 ÀÌÀü ¹öÀü¿¡¼­ ÀÌ¿Í °°Àº ÀÛ¾÷À» ¼öÇàÇÏ·Á°í ½ÃµµÇÏ¸é °æ°í ´ëÈ­ »óÀÚ¿¡ ÇØ´ç ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö°¡ Ç¥½ÃµË´Ï´Ù. ÀÌ ´ëÈ­ »óÀÚÀÇ ¸ð¾çÀ̳ª ±âÁ¸ ³»¿ë¿¡¼­ ±úÁø ºÎºÐÀº ÃÖÁ¾ »ç¿ëÀÚ³ª Flash °³¹ßÀÚ°¡ ¾Ë¸ÂÀº ±ÇÇÑÀ» ºÎ¿©Çؼ­ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • ·Îµå Á¦ÇÑ »çÇ×

    ÀÌÁ¦ ·ÎÄÃÀÌ ¾Æ´Ñ URLÀÇ SWF ¹× HTML ³»¿ë¿¡¼­ ·ÎÄà °æ·ÎÀÇ ³»¿ë(SWF, HTML, PNG µî)À» ·ÎµåÇÒ ¼ö ¾ø½À´Ï´Ù.

  • Ÿ»ç ÀúÀå¼Ò

    ÀÌÁ¦ Flash Player »ç¿ëÀڴ Ÿ»ç SWF(ºê¶ó¿ìÀúÀÇ ÁÖ¼Ò Ç¥½ÃÁÙ¿¡ Ç¥½ÃµÈ µµ¸ÞÀΰú ´Ù¸¥ µµ¸ÞÀÎÀÇ SWF)¿¡¼­ ¿µ±¸ °øÀ¯ °´Ã¼¸¦ Àаųª ¾²Áö ¸øÇϵµ·Ï ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¦ÇÑ »çÇ×Àº ±âº»ÀûÀ¸·Î Àû¿ëµÇÁö ¾ÊÀ¸¹Ç·Î »ç¿ëÀÚ°¡ Àû¿ë ¿©ºÎ¸¦ ¹Ì¸® °áÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

  • allowScriptAccess ±âº»°ª

    SWF 8 ÀÌ»ó ¹öÀü¿¡¼­ HTML allowScriptAccess ¸Å°³ º¯¼öÀÇ ±âº»°ªÀº "always"°¡ ¾Æ´Ï¶ó "sameDomain"ÀÔ´Ï´Ù. À̰ÍÀº SWF 7 ÀÌÀü ¹öÀü¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. allowScriptAccess ¸Å°³ º¯¼ö´Â SWF¿¡¼­ HTML ÆäÀÌÁöÀÇ JavaScript¸¦ È£ÃâÇÒÁö ¿©ºÎ¸¦ Á¦¾îÇÕ´Ï´Ù.

À§ÀÇ 4°¡Áö Á¦ÇÑ »çÇ× Áß Flash – Javascript ÀÇ Åë½Å°ú °ü·ÃÇØ¼­´Â allowScriptAccess ºÎºÐÀÌ ¹ÐÁ¢ÇѰü°è°¡ ÀÖ½À´Ï´Ù.

allowScriptAccess ÀÇ ¼¼ÆÃÀº ´ÙÀ½°ú °°½À´Ï´Ù.

  • allowScriptAccess°¡ "never"ÀÌ¸é ¾Æ¿ô¹Ù¿îµå ½ºÅ©¸³ÆÃÀº Ç×»ó ½ÇÆÐÇÕ´Ï´Ù. 
  • allowScriptAccess°¡ "always"ÀÌ¸é ¾Æ¿ô¹Ù¿îµå ½ºÅ©¸³ÆÃÀº Ç×»ó ¼º°øÇÕ´Ï´Ù. 
  • allowScriptAccess°¡ "sameDomain"(¹öÀü 8ºÎÅÍ SWF ÆÄÀÏ¿¡¼­ Áö¿ø)ÀÎ °æ¿ì SWF ÆÄÀÏÀÌ È£½ºÆÃÇÏ´Â À¥ ÆäÀÌÁö¿Í °°Àº µµ¸ÞÀο¡ ÀÖÀ¸¸é ¾Æ¿ô¹Ù¿îµå ½ºÅ©¸³ÆÃÀÌ Çã¿ëµË´Ï´Ù. 
  • HTML ÆäÀÌÁö¿¡ allowScriptAccess°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ±âº»°ªÀº ¹öÀü 8 SWF ÆÄÀÏÀÇ °æ¿ì "sameDomain"ÀÌ°í ±× ÀÌÀü ¹öÀüÀÇ SWF ÆÄÀÏÀÇ °æ¿ì "always"ÀÔ´Ï´Ù.

µû¶ó¼­ À¥¿¡¼­´Â °°Àº µµ¸ÞÀÎÀÇ °æ¿ì¸¸ Javascript ÇÔ¼ö°¡ È£Ãâ µÇ°í ´Ù¸¥ µµ¸ÞÀΰú ·ÎÄÿ¡¼­ Å×½ºÆ® ÇÒ ½Ã¿¡´Â allowScriptAccess = "always" ·Î º¯°æÀ» ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.

Flash ¿¡¼­ HTML À» Publish ÇÏ¸é ´ÙÀ½°ú °°Àº Äڵ尡 »ý¼ºÀÌ µË´Ï´Ù.

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>allowScriptAccess</title>
</head>
<body bgcolor="#ffffff">
<!--url's used in the movie-->
<!--text used in the movie-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="allowScriptAccess" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="allowScriptAccess.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="allowScriptAccess.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="allowScriptAccess" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>

À§ÀÇ ÄÚµå Áß ÇÏÀ̶óÀÌÆ®ÇÑ ÄÚµåÀÎ allowScriptAccess="sameDomain" ¸¦ allowScriptAccess = "always" ·Î º¯°æÀ» ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.

Flash 8 ÀÌÀü ¹öÀü¿¡¼­ÀÇ Åë½Å¹æ¹ý

Ç÷¡½Ã 8 ÀÌÀü ¹öÀü¿¡¼­ Falsh – Javascript °£ÀÇ Åë½Å ¹æ¹ýÀº getURL() , fscommand() ¸¦ »ç¿ëÇÏ¿´°í,. Javascript- Flash °£ÀÇ Åë½Å¹æ¹ýÀº SetVariable() À» »ç¿ë Çß½À´Ï´Ù.

getURL

Ç÷¡½Ã¿¡¼­ Javascript ¸¦ È£ÃâÇÏ´Â °¡Àå ½¬¿î ¹æ¹ýÀº getURL() À» ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. Ç÷¡½Ã¿¡¼­ Javaccript ÀÇ callJavascript() ÇÔ¼ö·Ñ È£ÃâÇÏ´Â ´ÙÀ½ÀÇactinoscript ¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

var msg:String = "'¾È³çÇϼ¼¿ä. ^^'";
var callJas:String = 'javascript:callJavascript('+msg+')';
getURL(callJas);

HTML ¿¡¼­´Â <head> ¿Í<body> »çÀÌ¿¡ ´ÙÀ½°ú °°ÀÌ Javaccript ÇÔ¼ö¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

Ç÷¡½Ã¿¡¼­ JavscriptÀÇ ÇÔ¼ö callJavascript ¸¦ È£ÃâÇÏ°í ¸Å°³º¯¼ö·Î msg ÀÎ ¡°¾È³çÇϼ¼¿ä.^^¡± ¹®ÀÚ¿­À» º¸³À´Ï´Ù. µû¶ó¼­ °á°ú´Â ´ÙÀ½ ±×¸² 1°ú °°½À´Ï´Ù.

<script language="JavaScript">
function callJavascript(str){
alert(str)
}
</script>

Ç÷¡½Ã¿¡¼­ JavaScriptÀÇ ÇÔ¼ö callJavascript ¸¦ È£ÃâÇÏ°í ¸Å°³º¯¼ö·Î msg ÀÎ ¡°¾È³çÇϼ¼¿ä.^^¡± ¹®ÀÚ¿­À» º¸³À´Ï´Ù. µû¶ó¼­ °á°ú´Â ´ÙÀ½ ±×¸² 1°ú °°½À´Ï´Ù.

alert â

±×¸² 1. alert â

getURL() À» ÀÌ¿ëÇÑ Javascript È£ÃâÀº ¹®¹ý»óÀ¸·Î ¾ÆÁÖ ½¬¿î ¹Ý¸é Ç÷¡½Ã Ç÷¡À̾ Æ÷ÇÔµÈ ºê¶ó¿ìÀúÀÇ È¯°æÀ» °Çµå·Á¼­ gif ¿¡´Ï¸ÞÀ̼ÇÀÌ ¸ØÃß´Â Çö»óÀ» ¹ß»ý ½Ãŵ´Ï´Ù.

ÁÖÀÇ: ·ÎÄÿ¡¼­ Å×½ºÆ® ÇÒ ¶§ ¿¡´Â Ç÷¡½Ã Ç÷¡À̾î 8ÀÇ È¯°æ¿¡¼­´Â allowScriptAccess="sameDomain" À» allowScriptAccess="always" ·Î º¯°æ ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ Àü¿ª º¸¾È ¼³Á¤ ÆÐ³Î¿¡¼­ swf ÆÄÀÏ¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇÏ¿©¾ß Á¤»óÀûÀ¸·Î º¸ÀÔ´Ï´Ù.

fscommand

fscommand() ´Â SWF ÆÄÀÏÀÌ Flash Player³ª À¥ ºê¶ó¿ìÀú °°ÀÌ FlashPlayer¸¦ È£½ºÆÃÇÏ´Â ÇÁ·Î±×·¥°ú Åë½ÅÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. Ç÷¡½Ã¿¡¼­ Javaccript ÀÇ callJavascript() ÇÔ¼ö·Ñ È£ÃâÇÏ´Â ´ÙÀ½ÀÇactinoscript ¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

var msg:String = "'¾È³çÇϼ¼¿ä. ^^'"; var callJas:String = "callJavascript"; fscommand(callJas, msg);

Ç÷¡½ÃÀÇ Publish Setting ¼³Á¤(ctrl+shift+ F12) ¿¡¼­ ±×¸² 2¿Í °°ÀÌ HTML ÅÇÀ» ¼±ÅÃÇϰí Template ¿¡¼­ Flash with FSCommand ¸¦ ¼±ÅÃÇϰí Publish ÇÕ´Ï´Ù.

Publish Setting ¼³Á¤

±×¸² 2. Publish Setting ¼³Á¤

Publish ÇÑ HTML ÆäÀÌÁö¸¦ º¸¸é ´ÙÀ½°ú Javascript °¡ ¼³Á¤ÀÌ µÇ¾î ÀÖ½À´Ï´Ù.

<script language="JavaScript">
<!--
var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the FSCommand messages in a Flash movie.
function fscommand_DoFSCommand(command, args) {
var fscommandObj = isInternetExplorer ? document.all.fscommand : document.fscommand;
//
// Place your code here.
//
}
// Hook for Internet Explorer.
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
document.write('<script language=\"VBScript\"\>\n');
document.write('On Error Resume Next\n');
document.write('Sub fscommand_FSCommand(ByVal command, ByVal args)\n');
document.write(' Call fscommand_DoFSCommand(command, args)\n');
document.write('End Sub\n');
document.write('</script\>\n');
}
//-->
</script>

À§ÀÇ Äڵ忡¼­ Ç÷¡½Ã À¯Àú°¡ ´Ù·ç¾î¾ß ÇÒ ºÎºÐÀº ÇÏÀ̶óÀÌÆ®ÇÑ ÄÚµå ºÎºÐ Áß Place your code here ºÎºÐÀÔ´Ï´Ù.

Áï ÇÔ¼ö ¾È¿¡¼­ Command ¿Í args ¸¦ ¹Þ¾Æ¼­ ó¸®ÇÏ¸é µË´Ï´Ù.

¾Æ·¡´Â command ¿Í args ¸¦ ¹Þ¾Æ¼­ alert âÀ» ¶Ù¿ì´Â ÄÚµå ÀÔ´Ï´Ù.

function fscommand_DoFSCommand(command, args) {
var fscommandObj = isInternetExplorer ? document.all.fscommand : document.fscommand;
//
if(command=="callJavascript") {
alert(args)
}
//
}

fscommand ´Â VBScript¸¦ ÀÌ¿ëÇÏ¿© Åë½ÅÀ» Çϱ⠶§¹®¿¡ ´Ù¸¥ VBScript¿Í Ãæµ¹ÀÌ ³¯ È®·üÀÌ ÀÖ°í, ¸Å°³º¯¼ö¸¦ 1°³¸¸ Àü´Þ ÇÒ ¼ö Àֱ⠶§¹®¿¡ 2°³ ÀÌ»óÀÇ ¸Å°³º¯¼ö¸¦ Àü´ÞÇϱâ À§Çؼ­´Â Javascript ÇÔ¼ö¿¡¼­ split ¸¦ ÀÌ¿ëÇÏ¿© ó¸® ÇÏ¿©¾ß ÇÕ´Ï´Ù.

´ÙÀ½ÀÇ ÄÚµå´Â 2°³ ÀÌ»óÀÇ ¸Å°³º¯¼ö¸¦ Àü´Þ ÇÏ´Â fscommand ÀÇ »ç¿ë ¿¹ ÀÔ´Ï´Ù.

Ç÷¡½Ã¿¡¼­´Â ´ÙÀ½°ú °°Àº Äڵ带 ÀÛ¼ºÇÕ´Ï´Ù.

var msg:String = "'¾È³çÇϼ¼¿ä. ^^'#¹Ý°©½À´Ï´Ù.*^^*";
var callJas:String = "callJavascript";
fscommand(callJas, msg);

¿©±â¼­ # Àº ±¸ºÐÀÚÀÇ ¿ªÇÒÀ» ÇÕ´Ï´Ù.

Javascript ÀÇ fscommand_DoFSCommand () ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

function fscommand2_DoFSCommand(command, args) {
var fscommand2Obj = isInternetExplorer ? document.all.fscommand2 : document.fscommand2;
//
if(command=="callJavascript") {
arg = args.split("#")
alert(arg[0]+'\n'+arg[1])
}
//
}

À§ Äڵ忡¼­ º¸¸é #ÀÇ ±¸ºÐÀÚ·Î ¹®ÀÚ¿­À» ºÐ¸®Çؼ­ alert â¿¡ \n À» ÀÌ¿ëÇÏ¿© ÁٹٲÞÀ» Çϰí ù¹øÂ° ÀÎÀÚ¿Í µÎ¹øÂ° ÀÎÀÚ¸¦ ÁÙ¹Ù²Þ ÇÏ¿© ±×¸² 3°ú °°ÀÌ alert âÀ¸·Î º¸¿©ÁÝ´Ï´Ù.

2°³ÀÇ ¸Å°³º¯¼öÀÇ °ªÀ» È®ÀÎ ÇÏ´Â alert â

±×¸² 3. 2°³ÀÇ ¸Å°³º¯¼öÀÇ °ªÀ» È®ÀÎ ÇÏ´Â alert â

ÁÖÀÇ: ·ÎÄÿ¡¼­ Å×½ºÆ® ÇÒ ¶§ ¿¡´Â Ç÷¡½Ã Ç÷¡À̾î 8ÀÇ È¯°æ¿¡¼­´Â allowScriptAccess="sameDomain" À» allowScriptAccess="always" ·Î º¯°æ ÇØ¾ß ÇÕ´Ï´Ù.

 

SetVariable

Javaccript ¿¡¼­ Flash ¿Í Åë½ÅÇÏ´Â ¹æ¹ýÀº ¸¹Àº ¸Þ½îµå¸¦ ÅëÇØ¼­ ÇÒ ¼ö ÀÖÁö¸¸ ±× Áß¿¡¼­ SetVariable() ÀÌ °¡Àå ¸¹ÀÌ ¾²ÀÔ´Ï´Ù. SetVariable()Àº Javascript ¿¡¼­ Ç÷¡½Ã¿¡¼­ÀÇ Á¤ÀÇÇÑ º¯¼öÀÇ °ªÀ» Ç÷¡½Ã·Î ³Ñ°ÜÁÖ´Â ¸Þ½îµå ÀÔ´Ï´Ù. Ç÷¡½Ã´Â º¯¼ö°¡ º¯°æÀÌ µÇ¸é À̺¥Æ®¸¦ ¹ß»ý½ÃŰ´Â watch() ¸Þ½îµå¸¦ ÅëÇØ¼­ °ªÀÌ º¯°æ µÉ ¶§¸¶´Ù callback ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Åë½ÅÀ» ÇÕ´Ï´Ù.

´ÙÀ½ÀÇ Äڵ带 Flash ¿¡ ÀÛ¼ºÇÕ´Ï´Ù.

var testValue:String = "";
// º¯¼ö°¡ º¯°æµÇ¸é ½ÇÇàµÇ¾îÁú callback ÇÔ¼ö
watchCallback = function (id, oldval, newval):String {
//º¯°æµÈ °ªÀº newval À» ÅëÇØ ¹Þ½À´Ï´Ù.
result_txt.text = newval;
return newval;
};
_root.watch("testValue", watchCallback);

À§ÀÇ ÄÚµå´Â testValue ¶ó´Â °ªÀÌ º¯°æÀÌ µÉ ¶§¸¶´Ù watchCallback ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÄÚµåÀÔ´Ï´Ù. Callback ÇÔ¼ö°¡ È£ÃâÀÌ µÇ¸é _root ¿¡ ÀÖ´Â result_txt ÅØ½ºÆ®¿¡ º¯°æµÈ °ªÀ» º¸¿© ÁÝ´Ï´Ù.

´ÙÀ½ÀÇ ÄÚµå´Â body ¾È¿¡ µé¾î°¡´Â ÄÚµåÀÔ´Ï´Ù.

<input type=button value="Ç÷¡½Ã·Î º¯¼ö ³Ñ±â±â" onClick="callJavascript()">
<form name="inputValue">
Value <input type="text" name="vars" size="10" >
</form>

HTML ÀÇ ÀÎÇ²ÅØ½ºÆ®¿¡ ÀÔ·ÂµÈ °ªÀ» inputValueÀÇ vars ¶ó´Â ¼Ó¼ºÀ¸·Î ÀúÀåÀ» ÇÏ°í ¡°Ç÷¡½Ã·Î º¯¼ö ³Ñ±â±â¡± ¹öưÀ» Ŭ¸¯Çϸé callJavascript() ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.

´ÙÀ½ÀÇ ÄÚµå´Â Javascript ÄÚµåÀÔ´Ï´Ù.

<script language="JavaScript">
function callJavascript(){
var sendText = inputValue.vars.value
   window.document.setVariable.SetVariable("testValue", sendText);
}
</script>

ÇÏÀ̶óÀÌÆ®ÇÑ ºÎºÐÀÇ Äڵ带 »ìÆìº¸¸é
window.document.FlashID.SetVariable(º¯¼ö, °ª) ÀÇ ±âº»Çü½Ä¿¡¼­ callJavascript() ÇÔ¼ö´Â SetVariable ¸Þ½îµå¸¦ ÅëÇØ testValue ÀÇ °ªÀ» sendText ·Î º¸³»±â À§ÇØ ¾Æ·¡¿Í °°Àº ÄÚµå·Î ÀÛ¼ºÀÌ µÇ¾ú½À´Ï´Ù.

window.document.setVariable.SetVariable("testValue", sendText);
HTML ¿¡¼­ Javascript À» ÅëÇØ¼­ Ç÷¡½Ã·Î °ªÀ» Àü´Þ

±×¸² 4. HTML ¿¡¼­ Javascript À» ÅëÇØ¼­ Ç÷¡½Ã·Î °ªÀ» Àü´Þ

ExternalInterface class

ExternalInterface class´Â ActionScript¿Í Flash Player ÄÁÅ×À̳Ê(¿¹: JavaScript HTML ÆäÀÌÁö ¶Ç´Â Flash Player¸¦ Æ÷ÇÔÇÑ µ¥½ºÅ©Åé ÀÀ¿ë ÇÁ·Î±×·¥) »çÀÌÀÇ Á÷Á¢ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÏ´Â ¿ÜºÎAPI(ÀÀ¿ë ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º)ÀÔ´Ï´Ù.

ExternalInterfaceÀÇ ±â´ÉÀº fscommand(), CallFrame() ¹× CallLabel() ¸Þ¼­µå¿Í ºñ½ÁÇÏÁö¸¸ º¸´Ù À¯¿¬ÇÏ°í º¸´Ù ÀϹÝÀûÀÎ Àû¿ëÀÌ °¡´ÉÇÕ´Ï´Ù. JavaScript-ActionScript Åë½Å¿¡´ÂExternalInterface¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

ActionScript¿¡¼­ HTML ÆäÀÌÁöÀÇ ¸ðµç JavaScript ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¸ðµç µ¥ÀÌÅÍ À¯ÇüÀÇ Àμö¸¦ ¼ö Á¦ÇÑ ¾øÀÌ Àü´ÞÇϰí È£Ãâ¿¡¼­ ¹Ýȯ°ªÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

HTML ÆäÀÌÁöÀÇ JavaScript¿¡¼­ Flash PlayerÀÇ ActionScript ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ActionScript ÇÔ¼ö´Â °ªÀ» ¹ÝȯÇÒ ¼ö ÀÖ°í JavaScript´Â È£ÃâÀÇ ¹Ýȯ°ªÀ» Áï½Ã ¼ö½ÅÇÕ´Ï´Ù. ExternalInterface¸¦ Áö¿øÇÏ´Â ºê¶ó¿ìÀú¿Í ¿î¿µ üÁ¦ÀÇ Á¶ÇÕÀº ´ÙÀ½°ú °°½À´Ï´Ù.

ºê¶ó¿ìÀú ¿î¿µÃ¼°è
Internet Explorer 5.0 ÀÌ»ó Windows  
Netscape 8.0 ÀÌ»ó Windows Macintosh
Mozilla 1.7.5 ÀÌ»ó Windows Macintosh
Firefox 1.0 ÀÌ»ó Windows Macintosh
Safari 1.3 ÀÌ»ó   Macintosh

À¥Ç¥ÁØÀÌ ´ëµÎ µÇ°í ÀÖ´Â Áö±ÝÀÇ ½ÃÁ¡¿¡¼­ ´Ù¾çÇÑ ºê¶ó¿ìÀú¸¦ Áö¿øÇÏ´Â ExternalInterface class ´Â Á¤¸» À¯¿ëÇÑ class ÀÔ´Ï´Ù.

ExternalInterface.call()

ExternalInterface.call() Àº Javascript ÇÔ¼ö¸¦ È£ÃâÇϰí return °ªÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

ÀÌÀü¿¡ Flash ¿¡¼­ Javascript ÇÔ¼ö¸¦ È£ÃâÇϰí return °ªÀ» SetVariable À» ÅëÇØ¼­ ¹Þ´Â °Íº¸´Ù ÇϳªÀÇ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¹Ù·Î retrun °ªÀ» ¹Þ±â ¶§¹®¿¡ »ç¿ëÀÚÀÇ ÀÔÀå¿¡¼­ ÆíÇØ Á³½À´Ï´Ù.

°¡Àå ±âº»ÀûÀÎ ÇüÅ´Â

ExternalInterface.call(methodName:String, [parameter1:Object])

ÀÔ´Ï´Ù.

¸Å°³º¯¼ö´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ Áö´Õ´Ï´Ù.

MethodName : È£ÃâÇÒ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö ÀÔ´Ï´Ù.
parameter1 : ¸Å°³º¯¼ö ÀÔ´Ï´Ù. 0°³ ÀÌ»óÀÇ ¸Å°³ º¯¼ö¸¦ ½°Ç¥·Î ±¸ºÐÇÏ¿© ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù

 

´ÙÀ½ÀÇ Äڵ带 Flash ¿¡ ÀÛ¼ºÇÕ´Ï´Ù.

import flash.external.*;
// È£ÃâÇÒ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö À̸§
var callJasFunction:String = "callJavascript";
//¸Å°³º¯¼ö
var msg:String = "¾È³çÇϼ¼¿ä. ^^";
//  ÀÚ¹Ù½ºÅ©¸³ È£Ãâ ÈÄ ¹ÝȯµÇ´Â °ª
var returnValue:String = ExternalInterface.call(callJasFunction, msg).toString();
return_txt.text = returnValue;

´ÙÀ½°ú °°Àº JavaScript Äڵ带 ÀÛ¼ºÇÕ´Ï´Ù.

<script language="JavaScript">
function callJavascript(str) {
alert(str)
return "Ç÷¡½Ã 8ÀÇ »õ·Î¿î class ÀÎ ExternalInterface.call() ÀÔ´Ï´Ù^^."
}
</script>
 

callJavascript ÇÔ¼ö°¡ È£ÃâÀÌ µÇ¸é alert âÀ» ¶Ù¿ì°í È®ÀÎÀ» ´©¸£´Â ¼ø°£ return ÀÇ °ªÀ» Ç÷¡½Ã·Î ¹Ýȯ ÇØ ÁÝ´Ï´Ù. Ç÷¡½Ã¿¡¼­´Â ¹Ýȯ°ªÀ» ¹Þ¾Æ¼­ return_txt ¿¡ Ç¥ÇöÇØÁÝ´Ï´Ù.

Javascript ¿¡¼­ ¹Ýȯ ¹ÞÀº °ªÀ» Ç¥Çö

±×¸² 5. Javascript ¿¡¼­ ¹Ýȯ ¹ÞÀº °ªÀ» Ç¥Çö

ÁÖÀÇ: ·ÎÄÿ¡¼­ Å×½ºÆ® ÇÒ ¶§ ¿¡´Â Ç÷¡½Ã Ç÷¡À̾î 8ÀÇ È¯°æ¿¡¼­´Â allowScriptAccess="sameDomain" À» allowScriptAccess="always" ·Î º¯°æ ÇØ¾ß ÇÕ´Ï´Ù.

ExternalInterface.addCallback()

ExternalInterface.addCallback() Àº Javascript ¿¡¼­Flash ÀÇ »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô callback ÇÔ¼ö¸¦ µî·ÏÇÏ´Â ¸Þ½îµå ÀÔ´Ï´Ù. ÀÌÀüÀÇ Javascript ¿¡¼­´Â Á¦ÇÑÀûÀ¸·Î Flash ÀÇ ³»ÀåÇÔ¼ö¸¸À¸·Î È£Ãâ ÇÒ ¼ö ÀÖ¾úÀ¸³ª ExternalInterface.addCallback()À» ÅëÇØ¼­ Flash ¿¡¼­ Á¤ÀÇµÈ »ç¿ëÀÚ ÇÔ¼ö¸¦ Á÷Á¢ È£Ãâ ÇÏ¿© »ç¿ë¼ºÀÌ Æí¸®ÇØÁ³½À´Ï´Ù. ¶ÇÇÑ ¿©·¯ °³ÀÇ ¸Å°³º¯¼ö¸¦ ³Ñ°Ü ÁÙ ¼ö Àֱ⠶§¹®¿¡ ´õ ÀÌ»ó split À¸·Î Âɰ³¾î¼­ »ç¿ëÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

°¡Àå ±âº»ÀûÀÎ ÇüÅ´Â

ExternalInterface.addCallback (methodName:String, instance:Object,method:Function)

ÀÔ´Ï´Ù.

¸Å°³º¯¼ö´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ Áö´Õ´Ï´Ù.

MethodName : JavaScript¿¡¼­ ActionScript ÇÔ¼ö°¡ È£ÃâµÇ´Â À̸§ÀÔ´Ï´Ù.
instance: ¸Þ¼­µå¿¡¼­ this°¡ È®ÀÎÇÏ´Â °´Ã¼ÀÔ´Ï´Ù. ÀÌ °´Ã¼´Â ÇØ´ç ¸Þ¼­µå¸¦ ãÀ» ¼ö ÀÖ´Â °´Ã¼ÀÏ ÇÊ¿ä´Â ¾øÀ¸¸ç, °´Ã¼ ¶Ç´Â nullÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
method : JavaScript¿¡¼­ È£ÃâµÇ´Â ActionScript ¸Þ¼­µåÀÔ´Ï´Ù.

´ÙÀ½ÀÇ Äڵ带 Flash ¿¡ ÀÛ¼ºÇÕ´Ï´Ù.

import flash.external.*; // ÀÚ¹Ù½ºÅ©¸³¿¡¼­ È£ÃâÇÒ Ç÷¡½Ã º¯¼ö¸í var flashFunction:String = "callPlayBall"; var instance:Object = null; // º¯¼ö¸í¿¡ ÀÇÇØ ½ÇÇàµÇ´Â ÄݹéÇÔ¼ö var realFunction:Function = playBall; ExternalInterface.addCallback(flashFunction, null, realFunction); function playBall(tgX:Number, tgY:Number, spd:Number):Void { moveMC(ball_mc, tgX, tgY, spd); } // °¨¼ÓÀÇ ¿òÁ÷ÀÓ function moveMC(tgMC:MovieClip, tgX:Number, tgY:Number, spd:Number):Void { var mc:MovieClip = tgMC.createEmptyMovieClip("tp_chProp", 98765); mc.onEnterFrame = function() { this._parent._x += spd*(tgX-this._parent._x); this._parent._y += spd*(tgY-this._parent._y); var diffX:Number = Math.abs(tgX-this._parent._x); var diffY:Number = Math.abs(tgY-this._parent._y); if (diffX<0.5 && diffY<0.5) { this._parent._x = tgX; this._parent._y = tgY; this.removeMovieClip(); } }; }

´ÙÀ½°ú °°Àº JavaScript Äڵ带 ÀÛ¼ºÇÕ´Ï´Ù.

<script language="JavaScript">
function callExternalInterface() {
// FlashID(ExternalInterface_addCallback) ¿¡ ÀÖ´Â callPlayBall ¿¡ µî·ÏµÇ¾î ÀÖ´Â ÇÔ¼ö¸¦ ¸¦ ¸Å°³º¯¼ö ÀÇ °ªÀ¸·Î È£Ãâ ÇÕ´Ï´Ù.
getMovieName("ExternalInterface_addCallback").callPlayBall(inputValue.x.value, inputValue.y.value, inputValue.spd.value);
}
// flashID ÀÇ À̸§À» ¹Þ¾Æ¼­ ºê¶ó¿ìÀúÀÇ ¼Ó¼º¿¡ µû¶ó flashID ÀÇ °ªÀ» ºê¶ó¿ìÀú¿¡ ¸Â°Ô º¯°æÇØ ÁÖ´Â ÇÔ¼ö ÀÔ´Ï´Ù.
function getMovieName(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else {
return document[movieName]
}
}
</script>

´ÙÀ½ÀÇ Äڵ带 HTML ÀÇ body ¿¡ ÀÛ¼ºÇÕ´Ï´Ù.

<!--  ¹öưÀ» Ŭ¸¯Çϸé "callExternalInterface()" ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.-->
<input type="button" onClick="callExternalInterface()" value="Call Flash Function" />
</form>
<!—inputValue ¿¡ °¢°¢ ÀÎÇ²ÅØ½ºÆ®¿¡¼­ÀÇ °ª x, y, spd ÀÇ º¯¼ö°ªÀ» ÀúÀåÇÕ´Ï´Ù.-->
<form name="inputValue">
Positon X <input type="text" name="x" size="10" >
Position Y <input type="text" name="y" size="10" >
Speed  <input type="text" name="spd" size="10" >
</form>
HTML ¿¡¼­ x, yÀÇ ÁÂÇ¥°ª°ú ½ºÇÇµå °ªÀ» Ç÷¡½ÃÀÇ ÇÔ¼ö·Î ³Ñ°Ü¼­ °øÀ» ¿òÁ÷ÀÌ´Â Àå¸é

±×¸² 6. HTML ¿¡¼­ x, yÀÇ ÁÂÇ¥°ª°ú ½ºÇÇµå °ªÀ» Ç÷¡½ÃÀÇ ÇÔ¼ö·Î ³Ñ°Ü¼­ °øÀ» ¿òÁ÷ÀÌ´Â Àå¸é

ÁÖÀÇ: ·ÎÄÿ¡¼­ Å×½ºÆ® ÇÒ ¶§ ¿¡´Â Ç÷¡½Ã Ç÷¡À̾î 8ÀÇ È¯°æ¿¡¼­´Â allowScriptAccess="sameDomain" À» allowScriptAccess="always" ·Î º¯°æ ÇØ¾ß ÇÕ´Ï´Ù.


ÀúÀÚ ¼Ò°³

±èÁ¤ÇåÀº macromedia korea ÄÁ¼³ÆÃ ÆÀ¿¡¼­ User Interface Architect ·Î ´Ù¾çÇÑ ½Ç¹« °æ·Â°ú °­ÀÇ °æÇèÀ» ¹ÙÅÁÀ¸·Î Ç÷¡½Ã ÄÁÅÙÃ÷ ¹× Ç÷¡½Ã ¶óÀÌÆ® ÄÁÅÙÃ÷¿¡ ´ëÇØ¼­ ÄÁ¼³ÆÃÀ» Çϰí ÀÖ½À´Ï´Ù. ¿©·¯ Ç÷¡½Ã Ä¿¹Â´ÏƼ¿¡¼­ ±×´Â º¸Çì¶ó´Â ´Ð³×ÀÓÀ¸·Î ²ÙÁØÈ÷ Ȱµ¿À» Çϰí ÀÖ½À´Ï´Ù.     ÀÚ·áÃâó : http://www.macromedia.com/kr/devnet/flash/articles/external_interface.html