패키지 | flash.display |
클래스 | public class Loader |
상속 | Loader DisplayObjectContainer InteractiveObject DisplayObject EventDispatcher Object |
하위 클래스 | AVLoader, FlexLoader |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
메서드를 사용하여 로드를 시작합니다. 로드된 표시 객체는 Loader 객체의 자식으로 추가됩니다.
텍스트 또는 이진 데이터를 로드하려면 URLLoader 클래스를 사용합니다.
Loader 객체는 자식 표시 객체(Loader 객체가 로드하는 표시 객체)를 하나만 가질 수 있기 때문에 Loader 클래스는 자신이 상속하는 다음 메서드를 무시합니다. 따라서 addChild()
, addChildAt()
, removeChild()
, removeChildAt()
및 setChildIndex()
메서드를 호출하면 예외가 발생합니다. 로드된 표시 객체를 제거하려면 해당 부모 DisplayObjectContainer 자식 배열에서 Loader 객체를 제거해야 합니다.
iOS 참고 사항
iOS의 AIR 응용 프로그램에서는 ActionScript가 포함된 SWF 파일을 응용 프로그램 패키지에서만 로드할 수 있습니다. 이 제한 사항에는 ActionScript용으로 내보낸 클래스 이름이 포함된 에셋 같은 모든 ActionScript가 포함됩니다. SWF 파일을 로드할 때 다음 예제에서처럼 부모 SWF와 동일한 응용 프로그램 도메인을 사용하여 SWF를 로드해야 합니다.
var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("swfs/SecondarySwf.swf"); var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null); loader.load(url, loaderContext);
또한 iOS에서 ActionScript ByteCode(ABC)를 포함한 SWF 파일을 로드했다가 언로드한 다음 다시 로드할 수 없습니다. 이를 수행하려는 경우 런타임 오류 3764가 발생합니다.
AIR 3.6 이하에서는 응용 프로그램 패키지에서 로드하든, 네트워크에서 로드하든 ActionScript 바이트 코드가 포함되지 않은 SWF 파일만 로드할 수 있습니다. ActionScript가 있는 외부 SWF 파일을 사용하는 대신 SWC 라이브러리를 만들어 기본 SWF에 연결하는 방법도 있습니다.
AIR 3.7 이상에서는 외부에서 호스트되는 보조 SWF를 로드할 수 있습니다. 이 기능에 대한 자세한 설명은 여기에서 확인할 수 있습니다.
이 iOS 제한 사항은 응용 프로그램이 iOS 시뮬레이터(ipa-test-interpreter-simulator 또는 ipa-debug-interpreter-simulator)나 인터프리터 모드(ipa-test-interpreter 또는 ipa-debug-interpreter)에서 실행되는 경우에는 적용되지 않습니다.
Loader 보안
Loader 클래스를 사용할 경우 다음과 같은 Flash Player 및 Adobe AIR 보안 모델을 고려해 볼 수 있습니다.
- 액세스 가능한 임의의 소스에서 내용을 로드할 수 있습니다.
- 호출하는 SWF 파일은 네트워크 샌드박스에 있고 로드할 파일은 로컬인 경우, 로딩이 허용되지 않습니다.
- 로드된 내용이 ActionScript 3.0에서 작성된 SWF 파일인 경우, 로드된 내용 파일에서
System.allowDomain()
또는System.allowInsecureDomain()
메서드 호출을 통해 크로스 스크립팅 배열이 승인되지 않는 한 다른 보안 샌드박스의 SWF 파일은 로드된 내용을 크로스 스크립팅할 수 없습니다. - 로드된 내용이 ActionScript 1.0 또는 2.0에서 작성된 AVM1 SWF 파일인 경우, AVM2 SWF 파일(ActionScript 3.0에서 작성)은 로드된 내용을 크로스 스크립팅할 수 없습니다. 하지만 LocalConnection 클래스를 사용하여 두 SWF 파일 간에 통신은 가능합니다.
- 로드된 내용이 이미지인 경우, 해당 SWF 파일의 도메인이 이미지의 원래 도메인에 있는 URL 정책 파일에 포함되지 않는 한 보안 샌드박스 외부의 SWF 파일은 로드된 데이터에 액세스할 수 없습니다.
- local-with-file-system 샌드박스의 동영상 클립은 local-with-networking 샌드박스의 동영상 클립을 스크립팅할 수 없으며, 그 반대의 경우도 마찬가지입니다.
- 일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 개발자 안내서의 "제한적 네트워킹 API"를 참조하십시오.
하지만 AIR에서 application
보안 샌드박스의 내용 즉 AIR 응용 프로그램과 함께 설치되는 내용은 이러한 보안 제한에 의해 제한되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
신뢰할 수 없는 소스(예: Loader 객체의 루트 SWF 파일에 대한 도메인이 아닌 도메인)에서 SWF 파일을 로드하는 경우, 다음 코드에서 보여 주듯이 Loader 객체의 마스크를 정의하여 해당 마스크의 바깥쪽 Stage 부분에 로드된 내용을 그릴 수 없게 할 수 있습니다.
import flash.display.*; import flash.net.URLRequest; var rect:Shape = new Shape(); rect.graphics.beginFill(0xFFFFFF); rect.graphics.drawRect(0, 0, 100, 100); rect.graphics.endFill(); addChild(rect); var ldr:Loader = new Loader(); ldr.mask = rect; var url:String = "http://www.unknown.example.com/content.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr);
참고: App Transport Security는 iOS9에서 Apple이 도입하고 있는 기능으로, 앱과 웹 서비스 간의 비보안 연결을 허용하지 않습니다. 이러한 변경으로 인해 Loader, URLLoader를 통해 비보안 웹 사이트에 대해 수행되는 모든 연결의 경우 연결이 중단되며 App Transport Security로 인해 작동하지 않습니다. 앱에서 Info.plist에 키를 추가하여 기본 비헤이비어에 대한 예외를 지정하십시오.
이 기능을 완전히 해제하려는 경우 Info.plist에 다음을 추가하면 이전처럼 작동합니다.
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict>
해당 앱의 응용 프로그램 설명자의 InfoAdditions 태그에 키를 추가하여 기본 비헤이비어에 대한 예외를 지정하십시오.
<iPhone> <InfoAdditions> <![CDATA[ <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.example.com</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key> <true/> <!--Include to allow HTTP requests--> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <!--Include to specify minimum TLS version--> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict> ]]> </InfoAdditions> </iPhone>
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
accessibilityImplementation : AccessibilityImplementation
이 InteractiveObject 인스턴스에 대한 현재 액세스 가능성 구현(AccessibilityImplementation)입니다. | InteractiveObject | ||
accessibilityProperties : AccessibilityProperties
이 표시 객체의 현재 액세스 가능성 옵션입니다. | DisplayObject | ||
alpha : Number
지정된 객체의 알파 투명도 값을 나타냅니다. | DisplayObject | ||
blendMode : String
사용할 블렌드 모드를 지정하는 BlendMode 클래스 값입니다. | DisplayObject | ||
blendShader : Shader [쓰기 전용]
전경 및 배경을 블렌딩하는 데 사용되는 셰이더를 설정합니다. | DisplayObject | ||
cacheAsBitmap : Boolean
true로 설정된 경우 Flash 런타임은 표시 객체의 내부 비트맵 표현을 캐시합니다. | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
null이 아닌 경우 이 Matrix 객체는 cacheAsBitmap이 true로 설정될 때 표시 객체가 렌더링되는 방법을 정의합니다. | DisplayObject | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
content : DisplayObject [읽기 전용]
load() 또는 loadBytes() 메서드를 사용하여 로드된 SWF 파일 또는 이미지(JPG, PNG 또는 GIF) 파일의 루트 표시 객체를 포함합니다. | Loader | ||
contentLoaderInfo : LoaderInfo [읽기 전용]
로드 중인 객체에 해당하는 LoaderInfo 객체를 반환합니다. | Loader | ||
contextMenu : NativeMenu
이 객체에 연결된 컨텍스트 메뉴를 지정합니다. | InteractiveObject | ||
doubleClickEnabled : Boolean
이 객체에서 doubleClick 이벤트를 받을지 여부를 지정합니다. | InteractiveObject | ||
filters : Array
현재 표시 객체와 연관된 각 필터 객체가 들어 있는 인덱싱된 배열입니다. | DisplayObject | ||
focusRect : Object
이 객체에서 포커스 사각형을 표시할지 여부를 지정합니다. | InteractiveObject | ||
height : Number
표시 객체의 높이를 픽셀 단위로 나타냅니다. | DisplayObject | ||
loaderInfo : LoaderInfo [읽기 전용]
이 표시 객체가 속한 파일의 로딩 정보가 포함된 LoaderInfo 객체를 반환합니다. | DisplayObject | ||
mask : DisplayObject
호출하는 표시 객체는 지정된 mask 객체에 의해 마스크 처리됩니다. | DisplayObject | ||
metaData : Object
PlaceObject4 태그를 통해 SWF 파일에 해당 DisplayObject의 인스턴스와 함께 메타데이터가 저장된 경우 DisplayObject 인스턴스의 메타데이터 객체를 가져옵니다. | DisplayObject | ||
mouseChildren : Boolean
해당 객체의 자식에서 마우스 또는 사용자 입력 장치가 사용하도록 설정되어 있는지 여부를 결정합니다. | DisplayObjectContainer | ||
mouseEnabled : Boolean
이 객체가 마우스 또는 기타 사용자 입력, 메시지를 수신할지 여부를 지정합니다. | InteractiveObject | ||
mouseX : Number [읽기 전용]
마우스 또는 사용자 입력 장치 위치의 x 좌표를 픽셀로 나타냅니다. | DisplayObject | ||
mouseY : Number [읽기 전용]
마우스 또는 사용자 입력 장치 위치의 y 좌표를 픽셀로 나타냅니다. | DisplayObject | ||
name : String
DisplayObject의 인스턴스 이름을 나타냅니다. | DisplayObject | ||
needsSoftKeyboard : Boolean
이 InteractiveObject 인스턴스가 포커스를 받을 때 가상 키보드(화면의 소프트웨어 키보드)를 표시할지 여부를 지정합니다. | InteractiveObject | ||
numChildren : int [읽기 전용]
이 객체의 자식 수를 반환합니다. | DisplayObjectContainer | ||
opaqueBackground : Object
표시 객체를 특정 배경색으로 불투명하게 처리할지 여부를 지정합니다. | DisplayObject | ||
parent : DisplayObjectContainer [읽기 전용]
이 표시 객체가 포함된 DisplayObjectContainer 객체를 나타냅니다. | DisplayObject | ||
root : DisplayObject [읽기 전용]
로드된 SWF 파일에 있는 표시 객체의 경우, 해당 SWF 파일이 나타내는 표시 목록의 트리 구조 부분에서 맨 위에 위치하는 표시 객체가 루트 속성이 됩니다. | DisplayObject | ||
rotation : Number
DisplayObject 인스턴스가 원점으로부터 회전한 각도입니다. | DisplayObject | ||
rotationX : Number
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 x축 회전한 각도를 나타냅니다. | DisplayObject | ||
rotationY : Number
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 y축 회전한 각도를 나타냅니다. | DisplayObject | ||
rotationZ : Number
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 z축 회전한 각도를 나타냅니다. | DisplayObject | ||
scale9Grid : Rectangle
현재 적용 중인 크기 조절 격자입니다. | DisplayObject | ||
scaleX : Number
등록 포인트에서 적용된 객체의 가로 크기(백분율)를 나타냅니다. | DisplayObject | ||
scaleY : Number
객체의 등록 포인트에서 적용된 객체의 세로 크기(백분율)를 나타냅니다. | DisplayObject | ||
scaleZ : Number
객체의 등록 포인트에서 적용된 객체의 깊이 크기(백분율)를 나타냅니다. | DisplayObject | ||
scrollRect : Rectangle
표시 객체의 스크롤 사각형 경계입니다. | DisplayObject | ||
softKeyboard : String
소프트 키보드의 모양을 제어합니다. | InteractiveObject | ||
softKeyboardInputAreaOfInterest : Rectangle
소프트 키보드가 표시될 때 화면에서 그대로 유지되는 영역을 정의합니다(iOS에서는 사용할 수 없음). | InteractiveObject | ||
stage : Stage [읽기 전용]
표시 객체의 Stage입니다. | DisplayObject | ||
tabChildren : Boolean
객체의 자식에서 탭 기능을 사용할 수 있는지 여부를 결정합니다. | DisplayObjectContainer | ||
tabEnabled : Boolean
이 객체가 탭 순서에 있는지 여부를 지정합니다. | InteractiveObject | ||
tabIndex : int
SWF 파일에서 객체의 탭 순서를 지정합니다. | InteractiveObject | ||
textSnapshot : flash.text:TextSnapshot [읽기 전용]
이 DisplayObjectContainer 인스턴스에 대한 TextSnapshot 객체를 반환합니다. | DisplayObjectContainer | ||
transform : flash.geom:Transform
표시 객체의 행렬, 색상 변환 및 픽셀 경계와 관련된 속성을 가진 객체입니다. | DisplayObject | ||
uncaughtErrorEvents : UncaughtErrorEvents [읽기 전용]
이 Loader 객체에 의해 로드된 SWF에서 처리되지 않은 오류가 발생하는 경우 uncaughtError 이벤트를 전달하는 객체입니다. | Loader | ||
visible : Boolean
표시 객체가 표시되는지 여부를 나타냅니다. | DisplayObject | ||
width : Number
표시 객체의 폭을 픽셀 단위로 나타냅니다. | DisplayObject | ||
x : Number
부모 DisplayObjectContainer의 로컬 좌표를 기준으로 DisplayObject 인스턴스의 x 좌표를 나타냅니다. | DisplayObject | ||
y : Number
부모 DisplayObjectContainer의 로컬 좌표를 기준으로 DisplayObject 인스턴스의 y 좌표를 나타냅니다. | DisplayObject | ||
z : Number
3D parent 컨테이너를 기준으로 DisplayObject 인스턴스의 z축에 있는 z 좌표 위치를 나타냅니다. | DisplayObject |
메서드 | 정의 주체 | ||
---|---|---|---|
Loader()
SWF, JPEG, GIF 또는 PNG 파일 등을 로드하는 데 사용할 수 있는 Loader 객체를 만듭니다. | Loader | ||
이 DisplayObjectContainer 인스턴스에 자식 DisplayObject 인스턴스를 추가합니다. | DisplayObjectContainer | ||
이 DisplayObjectContainer 인스턴스에 자식 DisplayObject 인스턴스를 추가합니다. | DisplayObjectContainer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
지정된 point 점으로 DisplayObjectContainer.getObjectsUnderPoint() 메서드를 호출하여 반환된 목록에서 임의의 표시 객체가 보안 제한 사항으로 인해 생략되는지 여부를 나타냅니다. | DisplayObjectContainer | ||
현재 Loader 인스턴스에 대해 진행 중인 load() 메서드 작업을 취소합니다. | Loader | ||
지정된 표시 객체가 DisplayObjectContainer 인스턴스의 자식인지 아니면 인스턴스 자체인지를 확인합니다. | DisplayObjectContainer | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
targetCoordinateSpace 객체의 좌표계를 기준으로 표시 객체의 영역을 정의하는 사각형을 반환합니다. | DisplayObject | ||
지정된 인덱스에 존재하는 자식 표시 객체 인스턴스를 반환합니다. | DisplayObjectContainer | ||
지정된 이름을 가진 자식 표시 객체를 반환합니다. | DisplayObjectContainer | ||
자식 DisplayObject 인스턴스의 인덱스 위치를 반환합니다. | DisplayObjectContainer | ||
이 DisplayObjectContainer 인스턴스의 자식(또는 손자 등)으로서 지정된 점 아래에 있는 객체의 배열을 반환합니다. | DisplayObjectContainer | ||
대상 좌표 공간 매개 변수에 의해 정의되는 좌표계를 기준으로 모양의 획을 제외하고 표시 객체의 경계를 정의하는 사각형을 반환합니다. | DisplayObject | ||
Point 객체를 Stage 전역 좌표에서 표시 객체의 로컬 좌표로 변환합니다. | DisplayObject | ||
Stage(전역) 좌표의 2차원 점을 3차원 표시 객체(로컬) 좌표로 변환합니다. | DisplayObject | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
표시 객체의 경계 상자를 평가하여 obj 표시 객체의 경계 상자와 겹치거나 교차하는지 확인합니다. | DisplayObject | ||
표시 객체를 평가하여 x 및 y 매개 변수에 의해 지정된 점과 겹치거나 교차하는지 확인합니다. | DisplayObject | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
SWF, JPEG, 점진적 JPEG, 비애니메이션 GIF 또는 PNG 파일을 이 Loader 객체의 자식 객체로 로드합니다. | Loader | ||
ByteArray 객체에 저장된 이진 데이터에서 로드합니다. | Loader | ||
IFilePromise 인스턴스를 로드합니다. | Loader | ||
3차원 표시 객체의 로컬 좌표에 있는 3차원 점을 Stage 전역 좌표의 2차원 점으로 변환합니다. | DisplayObject | ||
Point 객체를 표시 객체의 로컬 좌표에서 Stage 전역 좌표로 변환합니다. | DisplayObject | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
지정된 자식 DisplayObject 인스턴스를 DisplayObjectContainer 인스턴스의 자식 목록에서 제거합니다. | DisplayObjectContainer | ||
DisplayObjectContainer 자식 목록에서 지정된 인덱스 위치에 있는 자식 DisplayObject를 제거합니다. | DisplayObjectContainer | ||
모든 자식 DisplayObject 인스턴스를 DisplayObjectContainer 인스턴스의 자식 목록에서 제거합니다. | DisplayObjectContainer | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
가상 키보드를 표시합니다. | InteractiveObject | ||
표시 객체 컨테이너에서 기존 자식의 위치를 변경합니다. | DisplayObjectContainer | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
이 객체가 루트로 지정된 모든 MovieClip의 타임라인 실행을 재귀적으로 중지합니다. | DisplayObjectContainer | ||
지정된 두 개의 자식 객체의 z 순서(전후 순서)를 맞바꿉니다. | DisplayObjectContainer | ||
자식 목록에서 지정된 두 곳의 인덱스 위치에 있는 자식 객체의 z 순서(전후 순서)를 맞바꿉니다. | DisplayObjectContainer | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
load() 메서드를 사용하여 로드된 이 Loader 객체의 자식을 제거합니다. | Loader | ||
자식 SWF 파일 내용을 언로드하고 로드된 SWF 파일의 명령 실행을 중지합니다. | Loader | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
content | 속성 |
content:DisplayObject
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
또는 loadBytes()
메서드를 사용하여 로드된 SWF 파일 또는 이미지(JPG, PNG 또는 GIF) 파일의 루트 표시 객체를 포함합니다.
구현
public function get content():DisplayObject
오류
SecurityError — 로드된 SWF 파일 또는 이미지 파일이 사용자가 액세스할 수 없는 보안 샌드박스에 속해 있습니다. 로드된 SWF 파일의 경우, load() 또는 loadBytes() 메서드를 호출할 때 해당 파일에서 Security.allowDomain() 메서드를 호출함으로써 또는 로드하는 파일에서 SecurityDomain.currentDomain 으로 설정된 securityDomain 속성을 사용하여 loaderContext 매개 변수를 지정함으로써 이러한 상황을 피할 수 있습니다.
|
관련 API 요소
contentLoaderInfo | 속성 |
contentLoaderInfo:LoaderInfo
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
로드 중인 객체에 해당하는 LoaderInfo 객체를 반환합니다. LoaderInfo 객체는 Loader 객체와 로드된 내용 객체 간에 공유되며, 로드된 파일에 대한 로드 진행률 정보 및 통계를 제공합니다.
해당 로드와 연관된 이벤트는 Loader 객체의 contentLoaderInfo
속성에서 참조하는 LoaderInfo 객체에 의해 전달됩니다. contentLoaderInfo
속성을 유효한 LoaderInfo 객체로 설정하면 이벤트 수신자를 로드보다 먼저 객체에 추가할 수 있습니다.
로드된 SWF에서 발생한 포착되지 않는 오류를 검색하려면 Loader.contentLoaderInfo.uncaughtErrorEvents
가 아닌 Loader.uncaughtErrorEvents
속성을 사용합니다.
구현
public function get contentLoaderInfo():LoaderInfo
관련 API 요소
예제 ( 예제 사용 방법 )
var url:String = "http://www.helpexamples.com/flash/images/image2.jpg"; var urlRequest:URLRequest = new URLRequest(url); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete); loader.load(urlRequest); addChild(loader); function loader_complete(evt:Event):void { var target_mc:Loader = evt.currentTarget.loader as Loader; target_mc.x = (stage.stageWidth - target_mc.width) / 2; target_mc.y = (stage.stageHeight - target_mc.height) / 2; }
uncaughtErrorEvents | 속성 |
uncaughtErrorEvents:UncaughtErrorEvents
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
이 Loader 객체에 의해 로드된 SWF에서 처리되지 않은 오류가 발생하는 경우 uncaughtError
이벤트를 전달하는 객체입니다. try..catch
블록 밖에서 오류가 발생하는 경우 또는 리스너가 등록되지 않은 상태로 ErrorEvent 객체가 전달되는 경우 포착되지 않는 오류가 발생합니다.
Loader 객체의 uncaughtErrorEvents
속성은 객체가 직접 전달하는 이벤트가 아닌 객체를 통해 버블링되는 이벤트를 전달합니다. 이 속성은 대상 단계의 uncaughtErrorEvent
는 전달하지 않으며 캡처 및 버블링 단계의 이벤트만 전달합니다. Loader 객체가 정의되어 있는 현재 SWF에서 포착되지 않는 오류를 검색하려면 LoaderInfo.uncaughtErrorEvents
속성을 대신 사용하십시오.
Loader 객체에 의해 로드된 내용이 AVM1(ActionScript 2) SWF 파일일 경우, AVM1 SWF 파일에서 잡히지 않은 오류는 uncaughtError
이벤트로 나타나지 않습니다.
구현
public function get uncaughtErrorEvents():UncaughtErrorEvents
관련 API 요소
예제 ( 예제 사용 방법 )
uncaughtError
이벤트 핸들러를 정의합니다.
생성자 코드에서는 Loader 객체를 만들고 Loader 객체의 uncaughtErrorEvents
속성에 의해 전달되는 uncaughtError
이벤트에 사용할 리스너를 등록합니다.
uncaughtErrorHandler()
메서드 코드에서는 error
속성의 데이터 유형을 확인하고 이에 따라 응답합니다.
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.ErrorEvent; import flash.events.UncaughtErrorEvent; import flash.net.URLRequest; public class LoaderUncaughtErrorEventExample extends Sprite { private var ldr:Loader; public function LoaderUncaughtErrorEventExample() { ldr = new Loader(); ldr.load(new URLRequest("child.swf")); ldr.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } } }
Loader | () | 생성자 |
public function Loader()
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
SWF, JPEG, GIF 또는 PNG 파일 등을 로드하는 데 사용할 수 있는 Loader 객체를 만듭니다. load()
메서드를 호출하여 해당 에셋을 Loader 인스턴스의 자식으로 로드합니다. 그런 다음, Loader 객체를 표시 목록에 추가할 수 있습니다(예: DisplayObjectContainer 인스턴스의 addChild()
메서드 사용). 에셋은 자신이 로드되는 Stage에 나타납니다.
표시 목록의 표시 객체 컨테이너에 해당 객체를 추가하지 않는 Loader 인스턴스의 "오프리스트(offlist)" 모드를 사용할 수도 있습니다. 이 모드에서 Loader 인스턴스는 응용 프로그램의 추가 모듈을 포함하는 SWF 파일을 로드하는 데 사용될 수 있습니다.
SWF 파일 로드가 완료되는 시점을 감지하기 위해 Loader 객체의 contentLoaderInfo
속성과 관련된 LoaderInfo 객체의 이벤트를 사용할 수 있습니다. 이때 모듈 SWF 파일의 코드가 실행되어 모듈을 초기화하고 시작할 수 있습니다. offlist 모드에서 Loader 인스턴스는 구성 요소 또는 미디어 에셋을 포함하는 SWF 파일을 로드하는 데 사용될 수 있습니다. 앞에서와 마찬가지로 LoaderInfo 객체 이벤트 알림을 사용하여 구성 요소가 로드를 완료하는 시점을 감지할 수 있습니다. 이때 응용 프로그램은 SWF 파일의 라이브러리에 있는 구성 요소와 미디어 에셋을 나타내는 ActionScript 3.0 클래스를 인스턴스화함으로써 해당 구성 요소와 에셋을 사용할 수 있습니다.
Loader 객체의 상태를 확인하려면 Loader 객체의 contentLoaderInfo
속성과 연관된 LoaderInfo 객체의 다음과 같은 이벤트를 모니터링합니다.
open
이벤트 - 로드가 시작될 때 전달됩니다.ioError
또는securityError
이벤트 - 파일을 로드할 수 없는 경우 또는 로드 프로세스 중 오류가 발생한 경우 전달됩니다.progress
이벤트 - 파일이 로드되는 동안 계속해서 발생합니다.complete
이벤트 - 파일 다운로드가 완료된 후, 로드된 동영상 클립의 메서드와 속성이 사용 가능한 상태가 되기 전에 전달됩니다.init
이벤트 - 로드된 SWF 파일을 조작할 수 있도록, 로드된 SWF 파일의 속성과 메서드가 액세스 가능한 상태가 된 후에 전달됩니다. 이 이벤트는complete
핸들러에 앞서 전달됩니다. 스트리밍 SWF 파일의 경우init
이벤트는complete
이벤트보다 훨씬 더 이전에 발생할 수 있습니다. 대부분의 경우에는init
핸들러를 사용합니다.
참고(iOS에만 해당): iOS의 AIR 응용 프로그램에서는 ActionScript가 포함된 SWF 파일을 응용 프로그램 패키지에서만 로드할 수 있습니다. 이 제한 사항에는 ActionScript용으로 내보낸 클래스 이름이 포함된 에셋 같은 모든 ActionScript가 포함됩니다. SWF 파일을 로드할 때 부모 SWF와 동일한 응용 프로그램 도메인을 사용하여 SWF를 로드해야 합니다.
AIR 3.6 이하에서는 응용 프로그램 패키지에서 로드하든, 네트워크에서 로드하든 ActionScript 바이트 코드가 포함되지 않은 SWF 파일만 로드할 수 있습니다. ActionScript가 있는 외부 SWF 파일을 사용하는 대신 SWC 라이브러리를 만들어 기본 SWF에 연결하는 방법도 있습니다.
이 제한 사항은 응용 프로그램이 iOS 시뮬레이터(ipa-test-interpreter-simulator 또는 ipa-debug-interpreter-simulator)나 인터프리터 모드(ipa-test-interpreter 또는 ipa-debug-interpreter)에서 실행되는 경우에는 적용되지 않습니다.
관련 API 요소
close | () | 메서드 |
public function close():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
현재 Loader 인스턴스에 대해 진행 중인 load()
메서드 작업을 취소합니다.
관련 API 요소
load | () | 메서드 |
public function load(request:URLRequest, context:LoaderContext = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
SWF, JPEG, 점진적 JPEG, 비애니메이션 GIF 또는 PNG 파일을 이 Loader 객체의 자식 객체로 로드합니다. 애니메이션 GIF 파일을 로드하는 경우 첫 번째 프레임만 표시됩니다. Loader 객체는 하나의 자식만을 포함할 수 있기 때문에 후속 load()
요청을 발생시키면 이전 요청(여전히 대기 중인 경우)이 종료되고 새 로드가 시작됩니다.
참고: AIR 1.5 및 Flash Player 10에서는 로드된 이미지의 최대 크기가 8,191픽셀(폭 또는 높이)이며 총 픽셀 수는 16,777,215픽셀을 초과할 수 없습니다. 따라서 로드된 이미지의 폭이 8,191픽셀이면 높이가 2,048픽셀 이하여야 합니다. Flash Player 9 이전 버전 및 AIR 1.1 이전 버전에서는 이 제한이 높이 2,880픽셀 및 폭 2,880픽셀입니다.
Loader 객체로 로드된 SWF 파일 또는 이미지는 Loader 객체의 부모 표시 객체로부터 위치, 회전 및 크기 조절 속성을 상속합니다.
이 메서드를 사용하여 로드한 동영상 또는 이미지를 제거하거나 진행 중인 로드 작업을 취소하려면 unload()
메서드를 사용합니다.
SWF 내용이 들어 있는 HTML 페이지에서 allowNetworking
매개 변수(object
및 embed
태그)를 설정하여 SWF 파일에서 이 메서드를 사용하지 않게 할 수 있습니다.
iOS 참고 사항
iOS의 AIR 응용 프로그램에서는 ActionScript가 포함된 SWF 파일을 응용 프로그램 패키지에서만 로드할 수 있습니다. 이 제한 사항에는 ActionScript용으로 내보낸 클래스 이름이 포함된 에셋 같은 모든 ActionScript가 포함됩니다. SWF 파일을 로드할 때 다음 예제에서처럼 부모 SWF와 동일한 응용 프로그램 도메인을 사용하여 SWF를 로드해야 합니다.
var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("swfs/SecondarySwf.swf"); var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null); loader.load(url, loaderContext);
또한 iOS에서 ActionScript ByteCode(ABC)를 포함한 SWF 파일을 로드했다가 언로드한 다음 다시 로드할 수 없습니다. 이를 수행하려는 경우 런타임 오류 3764가 발생합니다.
AIR 3.6 이하에서는 응용 프로그램 패키지에서 로드하든, 네트워크에서 로드하든 ActionScript 바이트 코드가 포함되지 않은 SWF 파일만 로드할 수 있습니다. ActionScript가 있는 외부 SWF 파일을 사용하는 대신 SWC 라이브러리를 만들어 기본 SWF에 연결하는 방법도 있습니다.
이 제한 사항은 응용 프로그램이 iOS 시뮬레이터(ipa-test-interpreter-simulator 또는 ipa-debug-interpreter-simulator)나 인터프리터 모드(ipa-test-interpreter 또는 ipa-debug-interpreter)에서 실행되는 경우에는 적용되지 않습니다.
Loader 보안
이 메서드를 사용할 때는 Loader 클래스 설명에 나와 있는 Flash Player 보안 모델을 고려해야 합니다.
Flash Player 10 이상에서는 multipart Content-Type(예: "multipart/form-data")을 사용하고 POST 본문 내 "content-disposition" 헤더에 "filename" 매개 변수를 지정하여 업로드를 처리하는 경우 POST 작업이 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
- POST 작업은 마우스 클릭이나 키 누르기 같은 사용자 동작에 대한 응답으로 수행됩니다.
- POST 작업이 크로스 도메인인 경우, 즉 POST 대상이 POST 요청을 보내는 SWF 파일과 같은 서버에 없는 경우 대상 서버는 크로스 도메인 액세스를 허용하는 URL 정책 파일을 제공해야 합니다.
또한 multipart Content-Type의 경우 구문이 RFC2046 표준에 따라 유효해야 합니다. 구문이 유효하지 않은 경우 POST 작업은 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
매개 변수
request:URLRequest — 로드할 SWF, JPEG, GIF 또는 PNG 파일의 절대 또는 상대 URL입니다. 상대 경로는 기본 SWF 파일에 상대적이어야 하며, 절대 URL은 프로토콜 참조(예: http:// 또는 file:///)를 포함해야 합니다. 파일 이름에는 디스크 드라이브 이름을 포함할 수 없습니다.
| |
context:LoaderContext (default = null ) — LoaderContext 객체로, 다음을 정의하는 속성을 갖습니다.
iOS에만 해당: AIR for iOS에서 자세한 내용은 LoaderContext 클래스의 속성에 대한 설명을 참조하십시오. |
이벤트
asyncError: — LoaderContext.requestedContentParent 속성이 지정되어 있고 로드된 내용을 지정된 DisplayObjectContainer에 자식으로 추가할 수 없는 경우 contentLoaderInfo 객체에 의해 전달됩니다. 이는 로드된 내용이 flash.display.AVM1Movie 이거나 addChild() 의 requestedContentParent 호출에 오류가 발생할 때 일어납니다.
| |
complete: — 파일 로드가 완료되면 contentLoaderInfo 객체에서 전달됩니다. complete 이벤트는 항상 init 이벤트 이후에 전달됩니다.
| |
httpStatus: — HTTP를 통해 네트워크 요청이 수행되고 Flash Player가 해당 HTTP 상태 코드를 감지할 수 있을 때 contentLoaderInfo 객체에서 전달됩니다.
| |
init: — 로드된 SWF 파일의 속성 및 메서드에 액세스할 수 있을 때 contentLoaderInfo 객체에서 전달됩니다. init 이벤트는 항상 complete 이벤트 이전에 전달됩니다.
| |
ioError: — 로드 작업 실패를 유발하는 입력 또는 출력 오류가 발생할 때 contentLoaderInfo 객체에서 전달됩니다.
| |
open: — 로드 작업이 시작될 때 contentLoaderInfo 객체에서 전달됩니다.
| |
progress: — 로드 작업이 진행되는 동안 데이터가 수신될 때 contentLoaderInfo 객체에서 전달됩니다.
| |
securityError: — local-with-filesystem 샌드박스의 SWF 파일이 local-with-networking 샌드박스의 내용을 로드하려고 하거나 그 반대의 경우 contentLoaderInfo 객체에서 전달됩니다.
| |
securityError: — LoaderContext.requestedContentParent 속성이 지정되어 있고 LoaderContext.requestedContentParent 의 보안 샌드박스가 로드된 SWF에 액세스할 수 없는 경우 contentLoaderInfo 객체에 의해 전달됩니다.
| |
unload: — 로드된 객체가 제거될 때 contentLoaderInfo 객체에서 전달됩니다.
|
오류
IOError — request 객체의 digest 속성이 null 이 아닙니다. SWZ 파일(Adobe 플랫폼 구성 요소)을 로드할 때는 URLRequest 객체가 URLLoader.load() 메서드 호출에 사용되는 경우에만 URLRequest 객체의 digest 속성을 설정해야 합니다.
| |
SecurityError — LoaderContext.securityDomain 의 값이 null 또는 SecurityDomain.currentDomain 이어야 합니다. 이는 로드된 미디어를 원본 보안 샌드박스 또는 사용자 고유의 보안 샌드박스(정책 파일 필요)에만 배치할 수 있음을 의미합니다.
| |
SecurityError — 로컬 SWF 파일이 LoaderContext.securityDomain 을 null 이외의 값으로 설정할 수 없습니다. 로컬에 위치하지 않은 미디어를 로컬 샌드박스로 가져오거나, 다른 로컬 미디어를 원본 샌드박스가 아닌 다른 위치에 배치하는 것은 허용되지 않습니다.
| |
SecurityError — 일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 개발자 안내서의 "제한적 네트워킹 API"를 참조하십시오.
| |
SecurityError — context 매개 변수의 applicationDomain 또는 securityDomain 속성이 허용되지 않는 도메인에 대한 속성인 경우입니다.
| |
SecurityError — 로컬 SWF 파일이 context 매개 변수의 securityDomain 속성을 사용하려는 경우입니다.
| |
IllegalOperationError — context 매개 변수의 requestedContentParent 속성이 Loader 인 경우입니다.
| |
IllegalOperationError — LoaderContext.parameters 매개 변수가 null이 아니면서 문자열이 아닌 값을 가질 경우입니다.
| |
IllegalOperationError — iOS에서 응용 프로그램이 기본 응용 프로그램 도메인 이외의 응용 프로그램 도메인에 SWF 파일을 로드하려는 경우
| |
IllegalOperationError — iOS에서 응용 프로그램이 ABC 코드가 포함된 SWF를 로드했다가 언로드한 후 다시 로드하려는 경우
| |
Error — iOS에서 응용 프로그램이 ActionScript 코드가 포함되어 있는 SWF 파일을 응용 프로그램 패키지 이외의 위치에서 로드하려는 경우 이 오류를 catch할 수 없습니다. 응용 프로그램 화면에 "컴파일되지 않은 ActionScript"라는 제목의 대화 상자가 나타납니다. AIR 3.6 이하에서는 ActionScript가 포함된 SWF 파일을 로드하려 하면 파일이 외부 파일이든, 응용 프로그램 패키지에 포함되어 있든 관계없이 이 오류가 발생합니다.
|
관련 API 요소
loadBytes | () | 메서드 |
public function loadBytes(bytes:ByteArray, context:LoaderContext = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ByteArray 객체에 저장된 이진 데이터에서 로드합니다.
loadBytes()
메서드는 비동기적입니다. 로드된 객체의 속성에 액세스하기 전에 "init" 이벤트가 발생할 때까지 기다려야 합니다.
이 메서드를 사용할 때는 Loader 클래스 설명에 나와 있는 Flash Player 보안 모델을 고려해야 합니다.
참고(iOS에만 해당): iOS의 AIR 응용 프로그램에서는 ActionScript가 포함된 SWF 파일을 응용 프로그램 패키지에서만 로드할 수 있습니다. 이 제한 사항에는 ActionScript용으로 내보낸 클래스 이름이 포함된 에셋 같은 모든 ActionScript가 포함됩니다. SWF 파일을 로드할 때 부모 SWF와 동일한 응용 프로그램 도메인을 사용하여 SWF를 로드해야 합니다.
AIR 3.6 이하에서 이 메서드 호출은 iOS에 아무런 효과가 없습니다.
매개 변수
bytes:ByteArray — ByteArray 객체입니다. ByteArray의 내용은 Loader 클래스에서 지원되는 파일 형식(SWF, GIF, JPEG 또는 PNG)일 수 있습니다.
| |
context:LoaderContext (default = null ) — LoaderContext 객체입니다. LoaderContext 객체의 applicationDomain 속성만 적용되며, LoaderContext 객체의 checkPolicyFile 및 securityDomain 속성은 적용되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오. |
이벤트
asyncError: — LoaderContext.requestedContentParent 속성이 지정되어 있고 로드된 내용을 지정된 DisplayObjectContainer에 자식으로 추가할 수 없는 경우 contentLoaderInfo 객체에 의해 전달됩니다. 이는 로드된 내용이 flash.display.AVM1Movie 이거나 addChild() 의 requestedContentParent 호출에 오류가 발생할 때 일어납니다.
| |
complete: — 작업이 완료될 때 contentLoaderInfo 객체에 의해 전달됩니다. complete 이벤트는 항상 init 이벤트 이후에 전달됩니다.
| |
init: — 로드된 데이터의 속성 및 메서드에 액세스할 수 있을 때 contentLoaderInfo 객체에 의해 전달됩니다. init 이벤트는 항상 complete 이벤트 이전에 전달됩니다.
| |
ioError: — 런타임이 바이트 배열의 데이터를 구문 분석할 수 없을 때 contentLoaderInfo 객체에 의해 전달됩니다.
| |
open: — 작업이 시작될 때 contentLoaderInfo 객체에 의해 전달됩니다.
| |
progress: — 데이터가 메모리에서 전송될 때 contentLoaderInfo 객체에 의해 전달됩니다.
| |
securityError: — LoaderContext.requestedContentParent 속성이 지정되어 있고 LoaderContext.requestedContentParent 의 보안 샌드박스가 로드된 SWF에 액세스할 수 없는 경우 contentLoaderInfo 객체에 의해 전달됩니다.
| |
unload: — 로드된 객체가 제거될 때 contentLoaderInfo 객체에서 전달됩니다.
|
오류
ArgumentError — ByteArray 객체의 length 속성이 0보다 작거나 같은 경우입니다.
| |
IllegalOperationError — context 매개 변수의 checkPolicyFile 또는 securityDomain 속성이 null이 아닌 경우입니다.
| |
IllegalOperationError — context 매개 변수의 requestedContentParent 속성이 Loader 인 경우입니다.
| |
IllegalOperationError — LoaderContext.parameters 매개 변수가 null이 아니면서 문자열이 아닌 값을 가질 경우입니다.
| |
IllegalOperationError — iOS에서 응용 프로그램이 기본 응용 프로그램 도메인 이외의 응용 프로그램 도메인에 SWF 파일을 로드하려는 경우
| |
IllegalOperationError — iOS에서 응용 프로그램이 ABC 코드가 포함된 SWF 파일을 로드했다가 언로드한 후 다시 로드하려는 경우
| |
Error — iOS에서 응용 프로그램이 ActionScript 코드가 포함되어 있는 SWF 파일을 응용 프로그램 패키지 이외의 위치에서 로드하려는 경우 이 오류를 catch할 수 없습니다. 응용 프로그램 화면에 "컴파일되지 않은 ActionScript"라는 메시지의 대화 상자가 나타납니다. AIR 3.6 이하에서는 ActionScript가 포함된 SWF 파일을 로드하려 하면 파일이 외부 파일이든, 응용 프로그램 패키지에 포함되어 있든 관계없이 이 오류가 발생합니다.
| |
SecurityError — 제공된 context 속성의 applicationDomain 속성이 허용되지 않는 도메인에 대한 속성인 경우입니다.
| |
SecurityError — 일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 개발자 안내서의 "제한적 네트워킹 API"를 참조하십시오.
|
관련 API 요소
loadFilePromise | () | 메서드 |
public function loadFilePromise(promise:IFilePromise, context:LoaderContext = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2.5 |
IFilePromise 인스턴스를 로드합니다.
loadFilePromise
메서드는 IFilePromise
객체를 사용하고 이진 데이터를 로드합니다. 데이터가 점진적 문자열(예: 비디오)인 경우 "init" 또는 progress 이벤트를 기다린 후에 로드된 객체의 속성에 액세스합니다. 그렇지 않으면 complete 이벤트를 기다려서 데이터가 완전히 로드되었는지를 확인합니다.
이 메서드를 사용할 때는 Loader 클래스 설명에 나와 있는 Flash Player 보안 모델을 고려해야 합니다.
매개 변수
promise:IFilePromise — IFilePromise 객체입니다. 객체의 데이터 소스는 Loader 클래스에서 지원되는 파일 형식(SWF, GIF, JPEG 또는 PNG)일 수 있습니다.
| |
context:LoaderContext (default = null ) — LoaderContext 객체입니다. LoaderContext 객체의 applicationDomain 속성만 적용되며, LoaderContext 객체의 checkPolicyFile 및 securityDomain 속성은 적용되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오. |
이벤트
asyncError: — LoaderContext.requestedContentParent 속성이 지정되어 있고 로드된 내용을 지정된 DisplayObjectContainer에 자식으로 추가할 수 없는 경우 contentLoaderInfo 객체에 의해 전달됩니다. 이는 로드된 내용이 flash.display.AVM1Movie 이거나 addChild() 의 requestedContentParent 호출에 오류가 발생할 때 일어납니다.
| |
complete: — 작업이 완료될 때 contentLoaderInfo 객체에 의해 전달됩니다. complete 이벤트는 항상 init 이벤트 이후에 전달됩니다.
| |
init: — 로드된 데이터의 속성 및 메서드에 액세스할 수 있을 때 contentLoaderInfo 객체에 의해 전달됩니다. init 이벤트는 항상 complete 이벤트 이전에 전달됩니다.
| |
ioError: — 런타임에 데이터 소스에서 데이터를 구문 분석할 수 없는 경우 또는 데이터 소스 스트림을 읽을 수 없는 경우에 contentLoaderInfo 객체에 의해 전달됩니다.
| |
open: — 작업이 시작될 때 contentLoaderInfo 객체에 의해 전달됩니다.
| |
progress: — 데이터가 메모리에서 전송될 때 contentLoaderInfo 객체에 의해 전달됩니다.
| |
securityError: — LoaderContext.requestedContentParent 속성이 지정되어 있고 LoaderContext.requestedContentParent 의 보안 샌드박스가 로드된 SWF에 액세스할 수 없는 경우 contentLoaderInfo 객체에 의해 전달됩니다.
| |
unload: — 로드된 객체가 제거될 때 contentLoaderInfo 객체에서 전달됩니다.
|
오류
IllegalOperationError — context 매개 변수의 requestedContentParent 속성이 Loader 인 경우입니다.
| |
IllegalOperationError — LoaderContext.parameters 매개 변수가 null이 아니면서 문자열이 아닌 값을 가질 경우입니다.
| |
ArgumentError — 매개 변수로 전달된 IFilePromise 객체가 null인 경우입니다.
|
관련 API 요소
unload | () | 메서드 |
public function unload():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
메서드를 사용하여 로드된 이 Loader 객체의 자식을 제거합니다. 관련된 LoaderInfo 객체의 property
는 null
로 재설정됩니다. 해당 자식은 다른 객체에서 참조할 수 있기 때문에 반드시 삭제되지는 않지만, 더 이상 Loader 객체의 자식이 아닙니다.
unload()
메서드를 호출하면 Loader 객체의 contentLoaderInfo
속성이 null
로 설정됩니다. SWF와 함께 로드된 모든 시각적 에셋이 언로드되고 메모리에서 제거됩니다. 로드된 SWF의 ActionScript 클래스 정의는 메모리에 그대로 유지되고 로드된 SWF와 같은 응용 프로그램 도메인의 코드는 해당 클래스의 인스턴스에 액세스하여 새 인스턴스를 만들 수 있습니다.
참고(iOS에만 해당): AIR 3.6 이하에서 이 메서드는 iOS에 아무런 효과가 없습니다.
자식 SWF 파일을 언로드하기 전에 해당 자식 SWF 파일의 객체(예: LocalConnection, NetConnection, NetStream 및 Sound)에 있는 모든 스트림을 확실하게 닫는 것이 좋습니다. 그렇지 않으면 자식 SWF 파일이 언로드된 경우에도 자식 SWF 파일의 오디오가 계속해서 재생될 수 있습니다. 자식 SWF 파일의 스트림을 닫으려면 이벤트 리스너를 unload
이벤트에 대해 수신하는 자식에 추가합니다. 부모가 Loader.unload()
를 호출하면 unload
이벤트가 자식에 전달됩니다. 다음 코드는 이렇게 하는 방법을 보여 줍니다.
function closeAllStreams(evt:Event) { myNetStream.close(); mySound.close(); myNetConnection.close(); myLocalConnection.close(); } myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, closeAllStreams);
관련 API 요소
unloadAndStop | () | 메서드 |
public function unloadAndStop(gc:Boolean = true):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
자식 SWF 파일 내용을 언로드하고 로드된 SWF 파일의 명령 실행을 중지합니다. 이 메서드는 자식 SWF 파일의 EventDispatcher, NetConnection, Timer, Sound 또는 Video 객체에 대한 참조를 제거하여 Loader.load()
또는 Loader.loadBytes()
를 사용하여 로드되고 있는 SWF 파일을 언로드합니다. 따라서 자식 SWF 파일 및 자식 SWF 파일의 표시 목록에서 다음 동작이 발생합니다.
- 사운드가 중지됩니다.
- Stage 이벤트 리스너가 제거됩니다.
enterFrame
,frameConstructed
,exitFrame
,activate
및deactivate
의 이벤트 리스너가 제거됩니다.- 타이머가 중지됩니다.
- Camera 및 Microphone 인스턴스가 분리됩니다.
- 동영상 클립이 중지됩니다.
unloadAndStop()
메서드를 호출하면 Loader 객체의 contentLoaderInfo
속성이 null
로 설정됩니다. SWF와 함께 로드된 모든 시각적 에셋이 언로드되고 메모리에서 제거됩니다. 로드된 SWF의 ActionScript 클래스 정의는 메모리에 그대로 유지되고 로드된 SWF와 같은 응용 프로그램 도메인의 코드는 해당 클래스의 인스턴스에 액세스하여 새 인스턴스를 만들 수 있습니다.
참고(iOS에만 해당): AIR 3.6 이하에서 이 메서드는 iOS에 아무런 효과가 없습니다.
매개 변수
gc:Boolean (default = true ) — 자식 SWF 객체를 대상으로 가비지 수집기를 실행할지 여부(true 또는 false )를 나타내는 힌트를 제공합니다. 여러 객체를 비동기적으로 언로드하는 경우 gc 매개 변수를 false 로 설정하면 응용 프로그램 성능이 향상될 수 있습니다. 그러나 이 매개 변수를 false 로 설정하면 자식 SWF 파일의 미디어와 표시 객체가 unloadAndStop() 명령을 실행한 후에도 메모리에 유지될 수 있습니다.
|
관련 API 요소
- 이미지 파일의 이름과 위치를 나타내는
url
속성이 만들어집니다. LoaderExample
생성자에서loader
라는 새 Loader 객체를 만든 후 단계 3에 설명된configureListeners()
메서드에 전달합니다.- 생성자가 파일 이름 및 위치를 나타내도록 전달된
url
이 있는 새 URLRequest 객체request
를 만듭니다. request
객체가loader
객체의load()
메서드로 전달되며, 이 메서드는 이미지를 표시 목록으로 로드합니다.clickHandler
이벤트 리스너가 로더에서click
이벤트에 대해 등록됩니다. 마우스를 클릭하면 로드된 이미지가 언로드됩니다.configureListeners()
메서드가 다음 메서드를 사용하여 일곱 개의 이벤트 리스너를 추가합니다.completeHandler()
메서드는 이미지 로드가 완료되면 실행됩니다.httpStatusHandler()
메서드는 이미지가 로컬에 로드되지 않은 경우 네트워크 요청이 사용 가능하게 되고 Flash Player에서 해당 요청을 감지할 수 있을 때만 실행됩니다.initHandler()
메서드는completeHandler()
메서드 이전 및progressHandler()
메서드 이후에 실행됩니다. 일반적으로 SWF 파일을 로드할 경우에는init
이벤트가 더 유용합니다.ioErrorHandler()
메서드는 이미지 파일을 사용할 수 없거나 액세스할 수 없는 경우 실행됩니다.openHandler()
메서드는 이미지 파일을 처음 열 때 실행됩니다.progressHandler()
메서드는 이미지 파일을 로드하기 시작할 때 실행되며 이미지 로드가 완료되면 다시 한 번 실행됩니다.unLoadHandler()
메서드는 사용자가 이미지를 클릭할 때unload()
메서드를 사용하여 이미지가 언로드되면 실행됩니다.
검토를 진행할 때는 다음과 같은 요구 사항을 염두에 두어야 합니다.
- 이 예제에서는 컴파일된 SWF 파일과 같은 디렉토리에 Image.gif 파일이 있어야 합니다. 기본 SWF 파일의 크기에 알맞은 영역이 있는 이미지를 사용합니다.
- 이 예제에서는 LoaderInfo 객체에 사용 가능한 모든 이벤트를 활용하지만, 대부분의 경우 하위 세트만 필요합니다. 특히, 이미지 파일만을 로드할 경우
complete
이벤트(또는ioError
이벤트)만 있으면 로컬 이미지를 로드하는 데는 충분합니다.
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; public class LoaderExample extends Sprite { private var url:String = "Image.gif"; public function LoaderExample() { var loader:Loader = new Loader(); configureListeners(loader.contentLoaderInfo); loader.addEventListener(MouseEvent.CLICK, clickHandler); var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(Event.INIT, initHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(Event.UNLOAD, unLoadHandler); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function initHandler(event:Event):void { trace("initHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function unLoadHandler(event:Event):void { trace("unLoadHandler: " + event); } private function clickHandler(event:MouseEvent):void { trace("clickHandler: " + event); var loader:Loader = Loader(event.target); loader.unload(); } } }
Tue Jun 12 2018, 03:17 PM Z