패키지 | flash.desktop |
인터페이스 | public interface IFilePromise |
구현자 | MediaPromise, URLFilePromise |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2 |
파일 프로미스는 사용자가 아직 AIR 응용 프로그램 외부에 없는 파일을 드래그할 수 있도록 해 주는 드래그 앤 드롭 클립보드 형식입니다. AIR는 IFilePromise 인터페이스가 정의한 메서드와 속성을 사용하여 파일 프로미스가 드롭될 때 작성할 데이터에 액세스합니다.
파일 프로미스가 적절한 대상에 드롭되면 AIR는 IFilePromise open()
메서드를 호출합니다. 이 메서드를 구현하면 데이터 공급자가 IDataInput 인터페이스를 구현하는 객체로 반환됩니다. 공급자 객체는 ByteArray, FileStream, Socket, URLStream과 같은 내장 클래스 중 하나이거나 사용자 정의 클래스일 수 있습니다.
데이터 공급자의 데이터가 ByteArray 등을 통해 동기적으로 액세스될 경우 AIR는 IDataInput bytesAvailable
속성이 나타내는 데이터의 양을 읽어 대상 파일에 씁니다.
데이터 공급자의 데이터가 Socket 등을 통해 비동기적으로 액세스될 경우 AIR는 공급자가 전달한 이벤트를 사용하여 데이터를 읽고 파일에 쓰는 프로세스를 조정합니다. 데이터는 complete 또는 close 이벤트를 수신할 때까지 각 진행률 이벤트에서 읽힙니다. 런타임이 다음 이벤트를 수신합니다(단, 데이터 공급자는 모든 이벤트를 전달할 필요 없음).
- Event.OPEN
- ProgressEvent.PROGRESS
- ProgressEvent.SOCKET_DATA
- Event.COMPLETE
- Event.CLOSE
- IOErrorEvent.IOERROR
- SecurityErrorEvent.SECURITY_ERROR
- HTTPStatusEvent.HTTP_STATUS
- HTTPStatusEvent.HTTP_RESPONSE_STATUS
사용자 정의 데이터 공급자 클래스는 데이터를 사용할 수 있을 때 progress
이벤트 또는 socketData
이벤트를 전달해야 합니다. 마찬가지로 complete
또는 close
이벤트는 요청된 데이터를 모두 읽었을 때 전달되어야 합니다. 오류 이벤트는 데이터 전송이 실패했으며 중단되어야 함을 런타임에 알립니다. 오류 처리 및 디버깅 응용 프로그램 논리를 지원하기 위해 필요에 따라 다른 이벤트가 전달되어야 합니다.
IFilePromise가 정의한 메서드는 드래그 앤 드롭 작업이 완료된 후 AIR 런타임에 의해서만 호출되어야 합니다. 개발자는 일반적으로 자신의 코드에서 이러한 메서드를 호출하지 않아야 합니다.
참고: air.desktop 라이브러리에서 사용할 수 있는 URLFilePromise 클래스는 IFilePromise 인터페이스를 구현하고 URLStream을 데이터 공급자로 사용합니다. air.desktop 라이브러리는 AIR SDK에 별도의 SWF 및 SWC 파일로 포함됩니다.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
isAsync : Boolean [읽기 전용]
비동기 데이터 전송이 지원되는지 여부를 나타냅니다. | IFilePromise | ||
relativePath : String [읽기 전용]
이 파일 프로미스에 의해 만들어질 파일의 상대 경로와 파일 이름입니다. | IFilePromise |
메서드 | 정의 주체 | ||
---|---|---|---|
모든 데이터 읽기가 완료되면 AIR 런타임에 의해 호출됩니다. | IFilePromise | ||
데이터 공급자 객체를 반환합니다. | IFilePromise | ||
AIR 런타임이 데이터 공급자 객체에서 데이터를 읽을 때 발생하는 오류를 IFilePromise 구현에 알리기 위해 호출합니다. | IFilePromise |
isAsync | 속성 |
isAsync:Boolean
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2 |
비동기 데이터 전송이 지원되는지 여부를 나타냅니다.
true
인 경우 open()
메서드가 반환한 데이터 공급자 객체가 IEventDispatcher 인터페이스를 구현하거나 이 인터페이스를 구현하는 클래스를 확장해야 합니다. 데이터 전송이 progress
또는 socketData
이벤트에 의해 수행됩니다. AIR는 complete
또는 close
이벤트가 전달될 때까지 이러한 데이터 진행률 이벤트를 대기합니다.
isAsync
가 false를 반환하면 AIR 런타임은 모든 데이터를 즉시 사용할 수 있는 것으로 간주합니다. 이 경우 런타임은 데이터 공급자 객체의 bytesAvailable
속성을 읽어 사용 가능한 데이터 양을 확인하고 해당 양만큼의 데이터를 동기적으로 읽습니다.
구현
public function get isAsync():Boolean
relativePath | 속성 |
relativePath:String
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2 |
이 파일 프로미스에 의해 만들어질 파일의 상대 경로와 파일 이름입니다.
이 속성은 유효한 경로를 제공해야 합니다. 그렇지 않으면 파일 프로미스가 드롭될 때 인수 오류가 발생합니다.
경로는 하위 디렉토리를 포함할 수 있으며 하위 디렉토리는 드롭 위치를 기반으로 확인됩니다. 필요한 경우 하위 디렉토리가 만들어집니다. 하위 디렉토리를 포함할 때 File.separator
상수를 사용하여 현재 운영 체제에 대한 올바른 경로 분리 기호 문자를 삽입합니다. ..(마침표 두 개) 바로 가기를 사용하여 부모 디렉토리로 이동하는 것은 허용되지 않습니다. 이러한 작업을 시도하는 경우 인수 오류가 발생합니다. 오류가 발생하지 않고 경로에서 잘못된 파일 시스템 문자가 제거됩니다.
참고: 클라이언트 코드가 경로를 설정하도록 허용하려면 function set relativePath( value:String ):void
서명으로 setter 함수를 구현할 수 있습니다.
구현
public function get relativePath():String
오류
ArgumentError — 드롭 대상의 부모 디렉토리를 하나 이상 순회하기 위해 상대 경로에서 ..(마침표 두 개) 바로 가기를 사용하는 경우입니다.
|
close | () | 메서드 |
public function close():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2 |
모든 데이터 읽기가 완료되면 AIR 런타임에 의해 호출됩니다.
close()
가 호출된 후 open()
에 의해 반환된 객체 참조에 대해서는 메서드가 호출되지 않습니다. 데이터 공급자 객체는 안전하게 삭제할 수 있습니다.
open | () | 메서드 |
public function open():IDataInput
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2 |
데이터 공급자 객체를 반환합니다.
데이터 공급자 객체는 데이터 읽기 메서드를 정의하는 IDataInput 인터페이스를 구현해야 합니다. IFilePromise isAsync
속성이 true
를 반환할 경우 데이터 공급자 객체는 IEventDispatcher 인터페이스도 구현해야 합니다. 다음과 같은 내장 클래스를 데이터 공급자로 사용할 수 있습니다.
- ByteArray(동기)
- FileStream(동기 또는 비동기)
- Socket(비동기)
- URLStream(비동기)
필요한 인터페이스를 구현하거나 필요한 인터페이스를 구현하는 또 다른 클래스를 확장하는 사용자 정의 클래스의 객체를 제공할 수도 있습니다.
반환값IDataInput — IDataInput 인터페이스를 구현하는 객체입니다. 데이터가 비동기적으로 제공되는 경우 반환된 객체가 IEventDispatcher 인터페이스도 구현해야 합니다.
|
reportError | () | 메서드 |
public function reportError(e:ErrorEvent):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2 |
AIR 런타임이 데이터 공급자 객체에서 데이터를 읽을 때 발생하는 오류를 IFilePromise 구현에 알리기 위해 호출합니다.
매개 변수
e:ErrorEvent — 자세한 오류 정보가 들어 있는 오류 이벤트입니다.
|
Tue Jun 12 2018, 03:17 PM Z