예제: 브라우져 자바스크립트 통신
이 예제는 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에서 확인하시기 바랍니다.
주의: 플래시 내보내기 기능은 현재 개발자 프리뷰로 사용 가능합니다. 이 기능은 아직 개발 중이므로 위 정보는 변경 될 수 있습니다.
- 출처: 유니티코리아위키 (CC BY-NC-SA 2.0)