ActionScript에서 외부 코드 호출

ExternalInterface.call() 메서드는 컨테이너 응용 프로그램에서 코드를 실행합니다. 이때 컨테이너 응용 프로그램에서 호출할 함수 이름이 포함된 문자열이 매개 변수로 반드시 필요합니다. ExternalInterface.call() 메서드에 전달된 그 밖의 매개 변수는 함수 호출의 매개 변수로 컨테이너에 전달됩니다.

// 외부 함수 "addNumbers"를 호출합니다.
// 두 개의 매개 변수를 전달하고 변수 "result"에 해당 함수의 결과를
// 지정합니다.
var param1:uint = 3;
var param2:uint = 7;
var result:uint = ExternalInterface.call("addNumbers", param1, param2);

컨테이너가 HTML 페이지이면 이 메서드는 해당 HTML 페이지의 script 요소에 정의된 이름으로 JavaScript 함수를 호출합니다. JavaScript 함수의 반환 값은 ActionScript로 다시 전달됩니다.

<script language="JavaScript">
    // 두 숫자를 더하고 결과를 ActionScript에 다시 보냅니다.
    function addNumbers(num1, num2)
    {
        return (num1 + num2);
    }
</script>

컨테이너가 다른 ActiveX 컨테이너인 경우 이 메서드로 인해 Flash Player ActiveX 컨트롤이 해당 FlashCall 이벤트를 전달합니다. 지정된 함수 이름 및 매개 변수는 Flash Player에서 XML 문자열로 직렬화합니다. 컨테이너는 event 객체의 request 속성에서 이 정보에 액세스할 수 있으며 이 정보를 통해 자신의 코드를 어떻게 실행할지 결정합니다. 컨테이너 코드는 ActionScript에 값을 반환하기 위해 ActiveX 객체의 SetReturnValue() 메서드를 호출하여 그 결과(XML 문자열로 직렬화된 결과)를 해당 메서드의 매개 변수로 전달합니다. 이 통신에 사용되는 XML 형식에 대한 자세한 내용은 External API의 XML 형식을 참조하십시오.

컨테이너가 웹 브라우저인지 또는 다른 ActiveX 컨테이너인지 관계없이 호출이 실패하거나 컨테이너 메서드에서 반환 값을 지정하지 않으면 null이 반환됩니다. 포함 환경이 호출 코드가 액세스할 수 없는 보안 샌드박스에 속하는 경우 ExternalInterface.call() 메서드가 SecurityError 예외를 발생시킵니다. 컨테이너 환경에서 allowScriptAccess에 적절한 값을 설정하면 이 문제를 해결할 수 있습니다. 예를 들어 HTML 페이지에서 allowScriptAccess의 값을 변경하려면 objectembed 태그에서 해당 특성을 편집합니다.


Flash CS3

 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/main/00000342.html