예제: 브라우져 자바스크립트 통신

이 예제는 AS3(ActionScript3)가 브라우져내에서 JavaScript 통신하는 방법을 보여줍니다. 이 예제는 ExternalInterface ActionScript 클래스를 사용합니다.

실행되면, the BrowserCommunicator.TestCommunication() 함수가 브라우져 JavaScript를 호출할 수 있는 콜백(callback)을 등록합니다. 그 다음 해당 ActionScript는 팝업 경고창을 보여주는, 브라우져 JavaScript를 호출합니다. 그 다음 JavaScript에 의해 양방향 통신을 시험하는, 노출된 ActionScript 함수가 호출됩니다.


Required JavaScript

아래보이는 JavaScript는 유니티에서 배포된 SWF를 제공하는 html 에 첨부되어야 합니다. 아래 코드는 ActionScript에서 호출되는 함수를 생성합니다:

<script type="text/javascript">
 
function calledFromActionScript()
{
    alert("ActionScript called Javascript function")
 
    var obj = swfobject.getObjectById("unityPlayer");
    if (obj)
    {
        obj.callFromJavascript();
    }
}
 
</script> 


BrowserCommunicator.as (그리고 일치하는 C# 클래스)

package
{
    import flash.external.ExternalInterface;
    import flash.system.Security;
 
    public class BrowserCommunicator
    {
        //Exposed so that it can be called from the browser JavaScript.
        public static function callFromJavascript() : void
        {
            trace("Javascript successfully called ActionScript function.");
        }
 
        //Sets up an ExternalInterface callback and calls a Javascript function.
        public static function TestCommunication() : void
        {
            if (ExternalInterface.available)
            {
                try
                {
                    ExternalInterface.addCallback("callFromJavascript", callFromJavascript);
                }
                catch (error:SecurityError)
                {
                    trace("A SecurityError occurred: " + error.message);
                }
                catch (error:Error)
                {
                    trace("An Error occurred: " + error.message);
                }
 
                ExternalInterface.call('calledFromActionScript');
            }
            else
            {
                trace("External interface not available");
            }
        } 
    }
}

해당 클래스의 C# 더미(dummy) 동작(구현):

[NotConverted]
[NotRenamed]
public class BrowserCommunicator
{
   [NotRenamed]
   public static void TestCommunication()
   {
   }
}


시험하는 방법

간단히 BrowserCommunicator.TestCommunication() 를 호출하면 양방향 통신을 시험할 수 있습니다.


잠재적인 문제

Sandbox 보안 위반

보안 오류 발생: #2060 오류: sandbox 보안 위반

이 오류는 사용자의 html 파일에 대한 접근 권한이 허용되지 않은 SWF를 배포하는 경우에 발생합니다. 로컬에서 이 문제를 해결하는 방법은 다음과 같습니다 (선택):

  • Global Security Settings Panel 내에 Flash 플레이어를 신뢰하는 위치에 해당 SWF를 포함하는 폴더를 추가시킵니다.
  • localhost에서 해당 파일을 호스팅합니다.

Flash SandBox 보안에 대한 더 자세한 정보는 Adobe의 documentation에서 확인하시기 바랍니다.


주의: 플래시 내보내기 기능은 현재 개발자 프리뷰로 사용 가능합니다. 이 기능은 아직 개발 중이므로 위 정보는 변경 될 수 있습니다.

역링크