외부 SWF파일 로드
Flash Player 9 이상, Adobe AIR 1.0 이상
ActionScript 3.0에서 SWF 파일은 Loader 클래스를 사용하여 로드됩니다. 외부 SWF 파일을 로드하려면 ActionScript에서는 다음 네 가지를 수행합니다.
-
파일의 URL을 사용하여 새 URLRequest 객체를 만듭니다.
-
새 Loader 객체를 만듭니다.
-
이 Loader 객체의
load()
메서드를 호출하여 URLRequest 인스턴스를 매개 변수로 전달합니다.
-
표시 객체 컨테이너(예: Flash 문서의 기본 타임라인)의
addChild()
메서드를 호출하여 Loader 인스턴스를 표시 목록에 추가합니다.
완성된 코드는 다음과 같습니다.
var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);
위와 동일한 코드를 사용하여 JPEG, GIF, PNG 이미지 등의 외부 이미지 파일을 로드할 수 있습니다. 이때 SWF 파일 URL이 아니라 해당 이미지 파일의 URL을 지정합니다. SWF 파일은 이미지 파일과 달리 ActionScript를 포함할 수 있습니다. SWF 파일 로드 프로세스는 이미지 로드와 동일하지만, Flash Player 또는 AIR에서 SWF를 재생하고 있으며 ActionScript를 사용하여 외부 SWF 파일과 통신하려는 경우 외부 SWF 파일을 로드할 때 로드하는 SWF 파일과 로드되는 SWF 파일이 모두 동일한 보안 샌드박스에 있어야 합니다. 또한 외부 SWF 파일의 클래스 네임스페이스가 로드하는 SWF 파일의 클래스 네임스페이스와 동일한 경우 네임스페이스의 충돌을 방지하기 위해 로드되는 SWF 파일에 대한 새 응용 프로그램 도메인을 만들어야 할 수도 있습니다. 보안 및 응용 프로그램 도메인 고려 사항에 대한 자세한 내용은
응용 프로그램 도메인 작업
및
내용 로드
를 참조하십시오.
외부 SWF 파일이 성공적으로 로드되면
Loader.content
속성을 통해 액세스할 수 있습니다. 외부 SWF 파일이 ActionScript 3.0용으로 제작된 경우 이 파일은 확장하는 클래스에 따라 동영상 클립이나 스프라이트 중 하나가 됩니다.
AIR for iOS에서 SWF 파일을 로드하는 동작은 다른 플랫폼과 다른 몇 가지 차이점이 있습니다. 자세한 내용은
AIR for iOS의 SWF 파일 로드
를 참조하십시오.
이전 SWF 파일을 로드할 때 고려할 사항
이전 버전의 ActionScript를 사용하여 외부 SWF 파일을 제작한 경우 고려해야 할 중요한 제한 사항이 있습니다. AVM2(ActionScript Virtual Machine 2)에서 실행되는 ActionScript 3.0 SWF 파일과는 달리 ActionScript 1.0 또는 2.0용으로 제작된 SWF 파일은 AVM1(ActionScript Virtual Machine 1)에서 실행됩니다.
ActionScript 3.0 SWF 파일 로드와 비교해 볼 때 ActionScript 1.0 또는 2.0 SWF 파일을 ActionScript 3.0 SWF 파일로 로드하는 데는 중요한 차이점이 있습니다. Flash Player에서는 이전에 게시된 내용과의 호환성이 완벽하게 유지됩니다. Flash Player의 이전 버전에서 실행되는 모든 내용이 ActionScript 3.0을 지원하는 Flash Player 버전에서도 실행됩니다. 단, 다음과 같은 제한 사항이 적용됩니다.
-
ActionScript 3.0 코드는 ActionScript 1.0 또는 2.0으로 작성된 SWF 파일을 로드할 수 있습니다. ActionScript 1.0 또는 2.0 SWF 파일이 로드되면 로드된 객체(
Loader.content
속성)는 AVM1Movie 객체가 됩니다. AVM1Movie 인스턴스는 MovieClip 인스턴스와 동일하지 않습니다. 표시 객체이지만 동영상 클립과 달리 타임라인 관련 메서드나 속성이 없습니다. 부모 파일인 AVM2 SWF는 로드된 AVM1Movie 객체의 속성, 메서드 또는 객체에 대한 액세스 권한이 없습니다.
-
ActionScript 1.0 또는 2.0으로 작성된 SWF 파일에서는 ActionScript 3.0으로 작성된 SWF 파일을 로드할 수 없습니다. 이는 Flash 8 또는 Flex Builder 1.5 이하 버전에서 작성된 SWF 파일에서 ActionScript 3.0 SWF 파일을 로드할 수 없음을 의미합니다.
이 규칙에 대한 유일한 예외는 특정 ActionScript 2.0 SWF 파일에 의해 로드된 파일이 어떠한 수준에서도 전혀 없는 경우 해당 ActionScript 2.0 SWF 파일을 ActionScript 3.0 SWF 파일로 대체할 수 있다는 것입니다. ActionScript 2.0 SWF 파일에서는
loadMovieNum()
의
level
매개 변수에 값 0을 전달하여 호출함으로써 이를 수행할 수 있습니다.
-
일반적으로 ActionScript 3.0으로 작성된 SWF 파일과 함께 작동할 ActionScript 1.0 또는 2.0으로 작성된 SWF 파일은 마이그레이션해야 합니다. 예를 들어 ActionScript 2.0을 사용하여 미디어 플레이어를 만들었다고 가정해 봅니다. 미디어 플레이어에서 ActionScript 2.0을 사용하여 만들어진 다양한 내용을 로드합니다. ActionScript 3.0에서 만든 새로운 내용은 미디어 플레이어에서 로드할 수 없습니다. 비디오 플레이어를 ActionScript 3.0으로 마이그레이션해야 합니다.
그러나 ActionScript 3.0으로 미디어 플레이어를 만드는 경우 해당 미디어 플레이어에서 ActionScript 2.0으로 만든 내용을 간단히 로드할 수 있습니다.
다음 표에는 새로운 내용 및 실행 코드의 로드와 관련된 이전 버전의 Flash Player에 대한 제한 사항 및 다른 버전의 ActionScript로 작성된 SWF 파일 간의 크로스 스크립팅에 대한 제한 사항이 요약되어 있습니다.
지원되는 기능
|
Flash Player 7
|
Flash Player 8
|
Flash Player 9 및 10
|
로드 가능한 SWF의 Flash Player 버전
|
7 이하
|
8 이하
|
9(또는 10) 이하
|
포함된 AVM
|
AVM1
|
AVM1
|
AVM1 및 AVM2
|
실행할 SWF의 ActionScript 버전
|
1.0 및 2.0
|
1.0 및 2.0
|
1.0, 2.0 및 3.0
|
다음 표에서 "지원되는 기능"은 Flash Player 9 이상에서 실행되는 내용을 나타냅니다. Flash Player 8 이하에서 실행되는 내용은 ActionScript 1.0 및 2.0만 로드, 표시, 실행 및 크로스 스크립팅할 수 있습니다.
지원되는 기능
|
ActionScript 1.0 및 2.0에서 만든 내용
|
ActionScript 3.0에서 만든 내용
|
로드 및 코드 실행 가능한 내용의 작성 버전
|
ActionScript 1.0 및 2.0만
|
ActionScript 1.0, 2.0 및 ActionScript 3.0
|
크로스 스크립팅 가능한 내용의 작성 버전
|
ActionScript 1.0 및 2.0만(LocalConnection을 사용하는 ActionScript 3.0)
|
LocalConnection을 사용하는 ActionScript 1.0 및 2.0
ActionScript 3.0
|
|
|
|