외부 API는 ActionScript의 일부로서, Flash Player의 컨테이너 역할을 하는 "외부 응용 프로그램"(일반적으로 웹 브라우저 또는 독립 실행형 프로젝터 응용 프로그램)에서 실행되는 코드와 ActionScript 간의 통신 메커니즘을 제공합니다. ActionScript 3.0에서는 ExternalInterface 클래스에서 외부 API의 기능을 제공합니다. Flash Player 8의 이전 버전에서는
fscommand()
액션을 사용하여 컨테이너 응용 프로그램과 통신합니다. ExternalInterface 클래스는
fscommand()
를 대체합니다.
참고:
예를 들어 이전 응용 프로그램과 호환성을 유지해야 하거나 타사 SWF 컨테이너 응용 프로그램 또는 독립 실행형 Flash Player와의 호환을 위해 이전
fscommand()
함수를 사용해야 하는 경우, flash.system 패키지에서 패키지 수준 함수로 사용할 수 있습니다.
ExternalInterface 클래스는 ActionScript 및 Flash Player에서 HTML 페이지 JavaScript로의 통신을 손쉽게 수행할 수 있도록 하는 하위 시스템입니다.
ExternalInterface 클래스는 다음 경우에만 사용할 수 있습니다.
-
지원되는 모든 버전의 Internet Explorer for Windows(5.0 이상)
-
NPRuntime 인터페이스를 지원하는 브라우저(현재 Firefox 1.0 이상, Mozilla 1.7.5 이상, Netscape 8.0 이상 및 Safari 1.3 이상이 포함됨)
-
AIR 응용 프로그램(HTMLLoader 컨트롤을 통해 표시되는 HTML 페이지에 SWF가 포함된 경우)
그 밖의 모든 경우(예: 독립 실행형 플레이어에서 실행)
ExternalInterface.available
속성은
false
를 반환합니다.
ActionScript에서는 HTML 페이지에서 JavaScript 함수를 호출할 수 있습니다. 외부 API는
fscommand()
와 비교할 때 다음과 같은 향상된 기능을 제공합니다.
-
fscommand()
함수와 함께 사용되는 함수는 물론 모든 JavaScript 함수를 사용할 수 있습니다.
-
이름과 개수에 상관없이 인수를 전달할 수 있습니다. 명령과 단일 문자열 인수를 전달하는 데 제한이 없습니다. 따라서 외부 API는
fscommand()
보다 유연성이 뛰어납니다.
-
Boolean, Number 및 String 등 다양한 유형의 데이터를 전달할 수 있으며 String 매개 변수에 국한되지 않습니다.
-
호출 값을 수신할 수 있으며 그 값은 즉시 사용자 호출의 반환 값으로 ActionScript에 반환됩니다.
중요:
HTML 페이지의 Flash Player 인스턴스에 제공된 이름(
object
태그의
id
특성)에 하이픈(
-
)이나 JavaScript에서 연산자로 정의된 다른 문자(예:
+
,
*
,
/
,
\
,
.
등)가 포함되어 있으면, Internet Explorer에서 컨테이너 웹 페이지를 볼 때 ActionScript가 ExternalInterface를 호출할 수 없습니다. 또한 Flash Player 인스턴스를 정의하는 HTML 태그(
object
및
embed
태그)가 HTML
form
태그에 중첩되어 있는 경우에도 ActionScript에서 ExternalInterface가 호출되지 않습니다.