패키지 | flash.media |
클래스 | public class SoundLoaderContext |
상속 | SoundLoaderContext Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
메서드에 인수로 전달됩니다.
이 클래스를 사용할 경우 다음 보안 모델을 고려할 수 있습니다.
- 호출하는 파일이 네트워크 샌드박스에 있고 로드할 사운드 파일이 로컬인 경우 사운드 로드 및 재생은 허용되지 않습니다.
- 기본적으로 호출이 로컬이고 원격 사운드를 로드하여 재생하려고 하는 경우 사운드 로드 및 재생은 허용되지 않습니다. 이를 허용하려면 사용자가 명시적인 권한을 부여해야 합니다.
- 특정 사운드 처리 작업은 제한되어 있습니다. 다른 도메인의 파일에서 로드된 사운드의 데이터에 액세스하려면 URL 정책 파일을 구현해야 합니다. 이 제한 사항이 적용되는 사운드 관련 API는
Sound.id3
속성과SoundMixer.computeSpectrum()
,SoundMixer.bufferTime
및SoundTransform()
메서드입니다.
그러나 Adobe AIR에서 application
보안 샌드박스의 내용, 즉 AIR 응용 프로그램과 함께 설치되는 내용은 이러한 보안 제한에 의해 제한되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
속성 | 정의 주체 | ||
---|---|---|---|
bufferTime : Number = 1000
사운드 스트리밍 시작 전에 스트리밍 사운드를 버퍼에 미리 로드하는 시간(밀리초)입니다. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
사운드 로드를 시작하기 전에 응용 프로그램이 로드된 사운드의 서버에서 URL 정책 파일을 다운로드할지 여부를 지정합니다. | SoundLoaderContext | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object |
메서드 | 정의 주체 | ||
---|---|---|---|
새 사운드 로더 컨텍스트 객체를 만듭니다. | SoundLoaderContext | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object |
bufferTime | 속성 |
public var bufferTime:Number = 1000
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
사운드 스트리밍 시작 전에 스트리밍 사운드를 버퍼에 미리 로드하는 시간(밀리초)입니다.
전역 SoundMixer.bufferTime
속성을 설정하여 SoundLoaderContext.bufferTime
값을 재정의할 수 없습니다. SoundMixer.bufferTime
속성은 SWF 파일에 포함된 사운드 스트림의 버퍼링 시간에 영향을 주며, 동적으로 만들어진 Sound 객체 즉 ActionScript로 만든 Sound 객체와는 무관합니다.
checkPolicyFile | 속성 |
public var checkPolicyFile:Boolean = false
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
사운드 로드를 시작하기 전에 응용 프로그램이 로드된 사운드의 서버에서 URL 정책 파일을 다운로드할지 여부를 지정합니다. 이 속성은 호출하는 파일의 도메인 외부에서 Sound.load()
메서드를 사용하여 로드한 사운드에 적용됩니다.
호출하는 파일의 도메인 외부에서 사운드를 로드하고, 호출하는 파일 코드에서 해당 사운드 데이터에 대한 낮은 레벨의 액세스가 필요할 경우 이 속성을 true
로 설정합니다. 사운드 데이터에 대한 낮은 레벨의 액세스란 ID3Info 객체를 가져오기 위해 Sound.id3
속성을 참조하거나 로드된 사운드로부터 사운드 샘플을 가져오기 위해 SoundMixer.computeSpectrum()
메서드를 호출하는 것 등입니다. 로딩 시 checkPolicyFile
속성을 true
로 설정하지 않고 사운드 데이터에 액세스하려고 하면 필요한 정책 파일이 다운로드되지 않아 SecurityError 예외가 발생할 수 있습니다.
로드 중인 사운드 데이터에 대해 낮은 레벨의 액세스가 필요하지 않으면 checkPolicyFile
을 true
로 설정하지 않는 것이 좋습니다. 정책 파일을 확인하는 데 네트워크 대역폭이 소모되고 다운로드 시작이 지연될 수 있으므로 필요한 경우에만 확인해야 합니다.
SoundLoaderContext.checkPolicyFile
이 true
로 설정된 상태에서 Sound.load()
를 호출할 경우, Flash Player 또는 AIR는 관련 URL 정책 파일을 다운로드하거나 그러한 정책 파일이 없음을 확인한 다음 지정된 사운드를 다운로드합니다. Flash Player 또는 AIR는 다음과 같은 작업을 순서대로 수행하여 정책 파일이 있는지 확인합니다.
- Flash Player 또는 AIR는 이미 다운로드된 정책 파일을 확인합니다.
- Flash Player 또는 AIR는
Security.loadPolicyFile()
호출에 지정된 대기 중인 정책 파일을 다운로드합니다. - Flash Player 또는 AIR는 사운드의 URL에 해당하는 기본 위치, 즉
URLRequest.url
과 동일한 서버에 있는/crossdomain.xml
에서 정책 파일을 다운로드합니다. 사운드의 URL은Sound.load()
또는 Sound() 생성자 함수에 전달된 URLRequest 객체의url
속성에 지정되어 있습니다.
Flash Player 또는 AIR에서는 모든 경우에 적절한 정책 파일이 사운드의 서버에 있고 그 정책 파일의 위치에 따라 URLRequest.url
의 사운드 파일에 액세스할 수 있으며, 호출하는 파일의 도메인에서 하나 이상의 <allow-access-from>
태그를 통해 해당 사운드에 액세스할 수 있도록 허용해야 합니다.
checkPolicyFile
을 true
로 설정하면 Flash Player 또는 AIR는 정책 파일이 확인될 때까지 기다렸다가 사운드를 로드합니다. Sound.id3
또는 SoundMixer.computeSpectrum()
호출과 같이 사운드 데이터에 대한 낮은 레벨의 작업을 수행하려면 Sound 객체로부터 progress
및 complete
이벤트가 전달될 때까지 기다려야 합니다.
checkPolicyFile
을 true
로 설정했지만 적절한 정책 파일이 발견되지 않은 경우, 정책 파일이 필요한 작업을 수행할 때까지 오류 메시지가 표시되지 않고 Flash Player 또는 AIR가 SecurityError
예외를 발생시킵니다. complete
이벤트 수신 후 try
블록 내의 Sound.id3
값을 가져와 SecurityError
가 발생하는지 확인하면 정책 파일의 발견 여부를 테스트할 수 있습니다.
서버측 HTTP 리디렉션을 사용하는 URL에서 사운드를 다운로드하는 경우 checkPolicyFile
사용에 주의해야 합니다. Flash Player 또는 AIR는 Sound.load()
로 전달된 URLRequest 객체의 url
속성에 해당하는 정책 파일을 검색하려고 시도합니다. HTTP 리디렉션으로 인해 최종 사운드 파일이 다른 URL에서 다운로드된 경우 보안 결정에 중요한 최종 URL에 처음에 다운로드한 정책 파일이 적용되지 않을 수 있습니다.
이러한 상황을 해결하는 한 가지 progress
또는 complete
이벤트 수신 후 사운드의 최종 URL이 포함된 Sound.url
속성 값을 확인하는 것입니다. 그런 다음 사운드의 최종 URL을 기준으로 계산한 정책 파일의 URL로 Security.loadPolicyFile()
메서드를 호출합니다. 마지막으로, 예외가 발생하지 않을 때까지 Sound.id3
값을 폴링합니다.
이 방법은 AIR 응용 프로그램 샌드박스의 내용에 적용되지 않습니다. 응용 프로그램 샌드박스의 내용은 출처에 관계없이 항상 사운드 내용에 프로그래밍 방식으로 액세스할 수 있습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
관련 API 요소
SoundLoaderContext | () | 생성자 |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
새 사운드 로더 컨텍스트 객체를 만듭니다.
매개 변수bufferTime:Number (default = 1000 ) — 사운드 스트리밍 시작 전에 스트리밍 사운드를 버퍼에 미리 로드하는 시간(초)입니다.
| |
checkPolicyFile:Boolean (default = false ) — 객체를 로드할 때 URL 정책 파일의 존재를 확인해야 할지(true ) 여부를 지정합니다.
|
예제 ( 예제 사용 방법 )
SoundLoaderContext 객체(context
)의 첫 번째 매개 변수는 1초인 기본 버퍼 값을 3초로 늘리는 데 사용됩니다. 값은 밀리초 단위입니다. SoundLoaderContext 객체의 두 번째 매개 변수가 true
로 설정된 경우 Flash Player가 객체를 로드할 때 크로스 도메인 정책 파일을 확인합니다. 여기에서는 기본값인 false
로 설정되어 있으므로 정책 파일을 확인하지 않습니다. 사운드 객체의 load()
메서드는 사운드 스트리밍을 시작하기 전에 컨텍스트 설정을 사용하여 스트리밍 사운드를 버퍼로 미리 로드하는 데 3초가 걸리는지 확인합니다. URLRequest
객체는 Adobe의 포드캐스트인 파일의 위치를 확인합니다. 사운드 파일을 로드하는 중에 IOErrorEvent.IO_ERROR
오류가 발생하면 errorHandler()
메서드가 호출됩니다.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Tue Jun 12 2018, 03:17 PM Z