패키지 | flash.media |
클래스 | public class Sound |
상속 | Sound EventDispatcher Object |
하위 클래스 | SoundAsset |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player 10 이상 버전 및 AIR 1.5 이상 버전에서는 이 클래스를 사용하여 동적으로 생성된 사운드 작업을 할 수도 있습니다. 이러한 경우 Sound 객체는 sampleData
이벤트 핸들러에 할당된 함수를 사용하여 사운드 데이터를 폴링합니다. 사운드는 사운드 데이터로 채운 ByteArray 객체에서 검색할 때와 동일하게 재생됩니다. Sound.extract()
를 사용하면 Sound 객체에서 사운드 데이터를 추출한 후 사운드 데이터를 조작한 다음 재생 스트림에 다시 쓸 수 있습니다.
SWF 파일에 포함된 사운드를 제어하려면 SoundMixer 클래스 속성을 사용합니다.
참고: ActionScript 3.0 Sound API는 ActionScript 2.0과 다릅니다. ActionScript 3.0에서는 사운드 객체를 가져다가 계층 구조로 배열함으로써 그 속성을 제어할 수 없습니다.
이 클래스를 사용할 경우 다음 보안 모델을 고려할 수 있습니다.
- 호출하는 파일이 네트워크 샌드박스에 있고 로드할 사운드 파일이 로컬인 경우 사운드 로드 및 재생은 허용되지 않습니다.
- 호출하는 파일이 로컬인 경우 원격 사운드를 로드하여 재생하려고 하면 기본적으로 사운드를 로드 및 재생할 수 없습니다. 이러한 유형의 액세스를 허용하려면 사용자가 명시적인 권한을 부여해야 합니다.
- 특정 사운드 처리 작업은 제한되어 있습니다. 크로스 도메인 정책 파일을 구현하지 않는 한, 다른 도메인의 파일로는 로드된 사운드의 데이터에 액세스할 수 없습니다. 이 제한 사항이 적용되는 사운드 관련 API는
Sound.id3
,SoundMixer.computeSpectrum()
,SoundMixer.bufferTime
및SoundTransform
클래스입니다.
그러나 Adobe AIR에서 application
보안 샌드박스의 내용, 즉 AIR 응용 프로그램과 함께 설치되는 내용은 이러한 보안 제한에 의해 제한되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
bytesLoaded : uint [읽기 전용]
이 사운드 객체에서 현재 사용 가능한 바이트 수를 반환합니다. | Sound | ||
bytesTotal : int [읽기 전용]
이 사운드 객체에서 사용 가능한 총 바이트 수를 반환합니다. | Sound | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
id3 : ID3Info [읽기 전용]
MP3 파일에 포함된 메타데이터에 대한 액세스를 제공합니다. | Sound | ||
isBuffering : Boolean [읽기 전용]
외부 MP3 파일의 버퍼링 상태를 반환합니다. | Sound | ||
isURLInaccessible : Boolean [읽기 전용]
Sound.url 속성이 잘렸는지 여부를 나타냅니다. | Sound | ||
length : Number [읽기 전용]
현재 사운드의 길이(밀리초)입니다. | Sound | ||
url : String [읽기 전용]
이 사운드가 로드된 URL입니다. | Sound |
메서드 | 정의 주체 | ||
---|---|---|---|
새 Sound 객체를 만듭니다. | Sound | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
스트림을 닫으면 데이터 다운로드가 중단됩니다. | Sound | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
Sound 객체에서 원시 사운드 데이터를 추출합니다. | Sound | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 URL에서 외부 MP3 파일의 로드를 시작합니다. | Sound | ||
ByteArray 객체의 MP3 사운드 데이터를 Sound 객체에 로드합니다. | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
ByteArray 객체의 PCM 32비트 부동 소수점 사운드 데이터를 Sound 객체에 로드합니다. | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
사운드를 재생하기 위해 새 SoundChannel 객체를 생성합니다. | Sound | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
이벤트 | 요약 | 정의 주체 | ||
---|---|---|---|---|
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. | EventDispatcher | |||
데이터가 성공적으로 로드되면 전달됩니다. | Sound | |||
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. | EventDispatcher | |||
MP3 사운드에 ID3 데이터를 사용할 수 있을 때 Sound 객체에 의해 전달됩니다. | Sound | |||
로드 작업을 실패하게 만드는 입력/출력 오류가 발생할 때 전달됩니다. | Sound | |||
로드 작업이 시작될 때 전달됩니다. | Sound | |||
로드 작업이 진행되어 데이터가 수신될 때 전달됩니다. | Sound | |||
런타임이 새 오디오 데이터를 요청할 때 전달됩니다. | Sound |
bytesLoaded | 속성 |
bytesTotal | 속성 |
id3 | 속성 |
id3:ID3Info
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
MP3 파일에 포함된 메타데이터에 대한 액세스를 제공합니다.
MP3 사운드 파일은 파일에 대한 메타데이터를 제공하는 ID3 태그를 포함할 수 있습니다. Sound.load()
메서드를 사용하여 로드한 MP3 사운드에 ID3 태그가 포함되어 있는 경우 이러한 속성을 조회할 수 있습니다. UTF-8 문자 세트를 사용하는 ID3 태그만 지원됩니다.
Flash Player 9 이후 버전 및 AIR에서는 ID3 2.0 태그, 특히 2.3 및 2.4 태그를 지원합니다. 다음 표는 표준 ID3 2.0 태그와 해당 태그가 나타나는 내용 유형의 목록입니다. Sound.id3
속성은 my_sound.id3.COMM
, my_sound.id3.TIME
등의 형식을 통해 이러한 태그에 대한 액세스를 제공합니다. 첫 번째 표는 ID3 2.0 속성 이름 또는 ActionScript 속성 이름을 통해 액세스할 수 있는 태그를 설명합니다. 두 번째 표는 지원은 되지만 ActionScript에 미리 정의된 속성이 없는 ID3 태그를 설명합니다.
ID3 2.0 태그 | 해당 Sound 클래스 속성 |
COMM | Sound.id3.comment |
TALB | Sound.id3.album |
TCON | Sound.id3.genre |
TIT2 | Sound.id3.songName |
TPE1 | Sound.id3.artist |
TRCK | Sound.id3.track |
TYER | Sound.id3.year |
다음 표는 지원은 되지만 Sound 클래스에 미리 정의된 속성이 없는 ID3 태그를 설명합니다. mySound.id3.TFLT
, mySound.id3.TIME
등을 호출하여 액세스할 수 있습니다. 참고: Flash Lite 4에서는 이러한 태그가 모두 지원되지 않습니다.
속성 | 설명 |
TFLT | 파일 유형 |
TIME | 시간 |
TIT1 | 컨텐트 그룹 설명 |
TIT2 | 타이틀/노래 제목/컨텐트 설명 |
TIT3 | 부제/세부 설명 |
TKEY | 원조 |
TLAN | 언어 |
TLEN | 길이 |
TMED | 미디어 유형 |
TOAL | 오리지널 앨범/무비/쇼 제목 |
TOFN | 오리지널 파일 이름 |
TOLY | 오리지널 작사자/텍스트 작성자 |
TOPE | 오리지널 아티스트/연주자 |
TORY | 오리지널 출시 연도 |
TOWN | 파일 소유권자/사용권자 |
TPE1 | 수석 연주자/독주자 |
TPE2 | 밴드/오케스트라/반주 |
TPE3 | 지휘자/연주자 상세 설명 |
TPE4 | 연주자, 리믹스 작업자 또는 기타 편곡자 |
TPOS | 세트의 일부 |
TPUB | Publisher |
TRCK | 트랙 번호/세트 상의 위치 |
TRDA | 녹음 날짜 |
TRSN | 인터넷 라디오 방송국 이름 |
TRSO | 인터넷 라디오 방송국 소유자 |
TSIZ | 크기 |
TSRC | 국제 표준 레코드 코드(ISRC) |
TSSE | 소프트웨어/하드웨어 및 인코딩에 사용된 설정 |
TYER | 연도 |
WXXX | URL 링크 프레임 |
이 속성을 사용할 경우 다음과 같은 Flash Player 보안 모델을 생각해 볼 수 있습니다.
- Sound 객체의
id3
속성은 사운드 파일과 같은 보안 샌드박스에 있는 SWF 파일에 대해 항상 허용됩니다. 다른 샌드박스의 파일에 대해서는 보안 확인을 실행합니다. - Sound 클래스의
load()
메서드를 사용하여 사운드를 로드할 경우, SoundLoaderContext 객체인context
매개 변수를 지정할 수 있습니다. SoundLoaderContext 객체의checkPolicyFile
속성을true
로 설정하면 Flash Player에서 사운드가 로드되는 서버에 URL 정책 파일이 있는지 확인합니다. 정책 파일이 있으며 정책 파일이 로드하는 SWF 파일의 도메인에서의 액세스를 허용하면 해당 파일에서 Sound 객체의id3
속성에 액세스할 수 있고, 그렇지 않으면 액세스할 수 없습니다.
그러나 Adobe AIR에서 application
보안 샌드박스의 내용, 즉 AIR 응용 프로그램과 함께 설치되는 내용은 이러한 보안 제한에 의해 제한되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
구현
public function get id3():ID3Info
관련 API 요소
예제 ( 예제 사용 방법 )
생성자에서 사운드 파일이 로드되지만 재생하도록 설정되지 않습니다. 여기에서는 파일이 SWF 디렉토리에 있는 것으로 가정합니다. 시스템에는 로드된 사운드 파일의 ID3 태그를 읽을 수 있는 권한이 있어야 합니다. 파일에 ID3 정보가 있고 프로그램이 해당 정보를 읽을 수 있는 권한이 있으면 Event.ID3
이벤트가 발생하고 사운드 파일의 id3
속성이 채워집니다. id3
속성은 모든 ID3 정보와 함께 ID3Info
객체를 포함합니다.
id3Handler()
메서드에서 파일의 ID3 태그가 ID3Info 클래스 객체인 id3
에 저장됩니다. 텍스트 필드가 ID3 태그 목록을 표시하도록 인스턴스화됩니다. for 루프는 모든 ID3 2.0 태그를 반복하고 텍스트 필드의 내용에 이름과 값을 추가합니다. ID3 info(ID3Info
) 속성을 사용하여 아티스트, 곡명 및 앨범도 추가됩니다. ActionScript 3.0 및 Flash Player 9 이상은 ID3 2.0 태그, 특히 2.3 및 2.4를 지원합니다. for 루프에서처럼 속성을 반복하면 ID3 2.0 태그만 나타납니다. 그러나 이전 버전의 데이터도 곡의 id3
속성에 저장되고 ID3 info 클래스 속성을 사용하여 액세스할 수 있습니다. ID3 2.0 태그는 파일 시작 부분에 있지만 ID3 1.0의 태그는 파일 끝 부분에 있습니다. 때로는 파일이 동일한 장소에서 이전 및 이후 버전 태그를 모두 가질 수 있습니다. 파일 시작 부분과 끝 부분에서 버전 1.0 및 2.0 태그를 모두 사용하여 파일이 인코딩된 경우 id3Handler()
메서드가 두 번 호출됩니다. 먼저 2.0 버전을 읽고 이어서 1.0 버전을 읽습니다. ID3 1.0 태그만 사용할 수 있는 경우 id3.songname
처럼 ID3 info 속성을 통해 정보에 액세스할 수 있습니다. ID3 2.0의 경우 id3.TITS
속성이 새 태그(TITS)를 사용하여 곡명을 검색합니다.
이 예제에서는 오류 처리가 기록되지 않고 ID3 내용이 길면 결과가 표시 영역을 벗어날 수 있습니다.
package { import flash.display.Sprite; import flash.media.Sound; import flash.net.URLRequest; import flash.media.ID3Info; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.Event; public class Sound_id3Example extends Sprite { private var snd:Sound = new Sound(); private var myTextField:TextField = new TextField(); public function Sound_id3Example() { snd.addEventListener(Event.ID3, id3Handler); snd.load(new URLRequest("mySound.mp3")); } private function id3Handler(event:Event):void { var id3:ID3Info = snd.id3; myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.border = true; myTextField.appendText("Received ID3 Info: \n"); for (var propName:String in id3) { myTextField.appendText(propName + " = " + id3[propName] + "\n"); } myTextField.appendText("\n" + "Artist: " + id3.artist + "\n"); myTextField.appendText("Song name: " + id3.songName + "\n"); myTextField.appendText("Album: " + id3.album + "\n\n"); this.addChild(myTextField); } } }
isBuffering | 속성 |
isURLInaccessible | 속성 |
isURLInaccessible:Boolean
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
Sound.url
속성이 잘렸는지 여부를 나타냅니다. isURLInaccessible
값이 true
로 설정되면 Sound.url
값이 사운드가 로드되는 최종 URL의 유일한 도메인이 됩니다. 예를 들어 사운드가 http://www.adobe.com/assets/hello.mp3
에서 로드되고 Sound.url
속성 값이 http://www.adobe.com
인 경우 속성이 잘립니다. isURLInaccessible
값은 다음이 모두 해당될 때만 true
입니다.
- 사운드 파일을 로드하는 동안 HTTP 리디렉션이 발생했습니다.
Sound.load()
를 호출하는 SWF 파일의 도메인이 사운드 파일의 최종 URL과 다릅니다.Sound.load()
를 호출하는 SWF 파일은 사운드 파일에 액세스할 수 있는 권한이 없습니다. 사운드 파일에 액세스할 수 있는 권한을 부여하는 방식은Sound.id3
속성에 대한 권한을 부여하는 방식과 같습니다. 다시 말해 정책 파일을 설정한 다음SoundLoaderContext.checkPolicyFile
속성을 사용하면 됩니다.
참고: isURLInaccessible
속성은 Flash Player 10.1 및 AIR 2.0을 지원할 목적으로 추가되었지만 Flash 런타임이 지원하는 경우 모든 버전의 SWF 파일에서 이 속성을 사용할 수 있습니다. 따라서 "엄격 모드"에서 일부 제작 도구를 사용하면 컴파일 오류가 발생합니다. 이 오류를 해결하려면 간접 구문 mySound["isURLInaccessible"]
을 사용하거나 엄격 모드를 해제합니다. Flash Professional CS5 또는 Flex SDK 4.1을 사용하는 경우 Flash Player 10.1 및 AIR 2 이전에 릴리스된 런타임에 대해 이 API를 사용 및 컴파일할 수 있습니다.
AIR에 포함된 응용 프로그램 내용의 경우 이 속성의 값은 항상 false
입니다.
구현
public function get isURLInaccessible():Boolean
관련 API 요소
length | 속성 |
url | 속성 |
url:String
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이 사운드가 로드된 URL입니다. 이 속성은 Sound.load()
메서드를 사용하여 로드된 Sound 객체에만 적용할 수 있습니다. SWF 파일 라이브러리의 사운드 에셋과 연관된 Sound 객체의 경우, url
속성 값은 null
입니다.
Sound.load()
를 처음 호출하면 최종 URL을 아직 모르기 때문에 url
속성의 초기값이 null
입니다. Sound 객체에서 open
이벤트가 전달되는 즉시 url
속성은 null이 아닌 값을 갖게 됩니다.
url
속성에는 사운드가 로드된 최종 URL(절대 URL)이 포함되어 있습니다. url
값은 일반적으로 Sound.load()
의 stream
매개 변수에 전달된 값과 동일합니다. 그러나 Sound.load()
에 상대 URL을 전달한 경우 url
속성 값은 절대 URL을 나타냅니다. 또한 원래의 URL 요청이 HTTP 서버에 의해 리디렉션된 경우 url
속성 값은 사운드 파일이 실제로 다운로드된 최종 URL을 나타냅니다. 최종 URL(절대 URL)을 보고하는 이러한 기능은 LoaderInfo.url
의 비헤이비어와 동일합니다.
경우에 따라 url
속성의 값이 잘리기도 합니다. 자세한 내용은 isURLInaccessible
속성을 참조하십시오.
구현
public function get url():String
관련 API 요소
Sound | () | 생성자 |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
새 Sound 객체를 만듭니다. 유효한 URLRequest 객체를 Sound 생성자로 전달하면 생성자는 해당 Sound 객체에 대해 자동으로 load()
함수를 호출합니다. 유효한 URLRequest 객체를 Sound 생성자로 전달하지 않은 경우에는 Sound 객체에 대한 load()
함수를 직접 호출해야 스트림이 로드됩니다.
Sound 객체에서 일단 load()
가 호출된 뒤에는 그 Sound 객체로 다른 사운드 파일을 로드할 수 없습니다. 다른 사운드 파일을 로드하려면 새 Sound 객체를 만들어야 합니다.
load()
를 사용하는 대신 sampleData
이벤트 핸들러를 사용하여 사운드를 동적으로 Sound 객체에 로드할 수 있습니다.
매개 변수 stream:URLRequest (default = null ) — 외부 MP3 파일을 가리키는 URL입니다.
| |
context:SoundLoaderContext (default = null ) — Sound 객체의 버퍼에 MP3 데이터를 보유하는 최소 시간(밀리초)인 버퍼 시간을 정의할 수 있고 응용 프로그램이 사운드를 로드하기 전에 크로스 도메인 정책 파일을 확인해야 하는지 여부를 지정할 수 있는 선택적 SoundLoader 컨텍스트 객체입니다.
|
close | () | 메서드 |
public function close():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
스트림을 닫으면 데이터 다운로드가 중단됩니다. close()
메서드를 호출한 후에는 스트림에서 데이터를 읽을 수 없습니다.
오류
IOError — 스트림을 닫을 수 없거나, 스트림이 열려 있지 않습니다.
|
예제 ( 예제 사용 방법 )
Sound.close()
메서드가 호출되고 사운드가 스트리밍을 중단합니다.
생성자에서 [시작] 및 [중단] 버튼에 대한 텍스트 필드가 생성됩니다. 사용자가 텍스트 필드를 클릭하면 clickHandler()
메서드가 호출됩니다. 이 메서드는 사운드 파일의 시작 및 중단을 처리합니다. 네트워크 연결 또는 사용자가 [중단] 버튼을 클릭하는 시간에 따라 이미 파일의 많은 부분이 로드되었을 수 있고 사운드 파일의 재생을 중단하려면 약간 시간이 걸릴 수도 있습니다. try...catch
블록은 스트림을 닫을 때 발생할 수 있는 IO 오류를 잡아내는 데 사용됩니다. 예를 들어 로컬 디렉토리에서 사운드가 로드되고 스트리밍되지 않는 경우 "이 URLStream 객체에는 열려 있는 스트림이 없습니다."라고 기술된 2029 오류가 발생합니다.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.errors.IOError; import flash.events.IOErrorEvent; public class Sound_closeExample extends Sprite { private var snd:Sound = new Sound(); private var button:TextField = new TextField(); private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); public function Sound_closeExample() { button.x = 10; button.y = 10; button.text = "START"; button.border = true; button.background = true; button.selectable = false; button.autoSize = TextFieldAutoSize.LEFT; button.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(button); } private function clickHandler(e:MouseEvent):void { if(button.text == "START") { snd.load(req); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); button.text = "STOP"; } else if(button.text == "STOP") { try { snd.close(); button.text = "Wait for loaded stream to finish."; } catch (error:IOError) { button.text = "Couldn't close stream " + error.message; } } } private function errorHandler(event:IOErrorEvent):void { button.text = "Couldn't load the file " + event.text; } } }
extract | () | 메서드 |
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
Sound 객체에서 원시 사운드 데이터를 추출합니다.
이 메서드는 다른 Sound 객체의 sampleData
이벤트에 할당하는 함수를 사용하여 동적으로 생성된 오디오로 작업하는 데 사용하도록 설계되었습니다. 즉, 이 메서드를 사용하면 Sound 객체 하나에서 사운드를 추출하고 다른 Sound 객체에서 사용하는 바이트 배열에 데이터를 기록하여 동적 오디오를 스트리밍할 수 있습니다.
오디오 데이터는 대상 바이트 배열에 해당 배열의 현재 위치부터 배치됩니다. 오디오 데이터는 항상 44100Hz 스테레오로 노출됩니다. 샘플 유형은 32비트 부동 소수점 값이며 ByteArray.readFloat()
를 사용하여 Number로 변환할 수 있습니다.
매개 변수
target:ByteArray — 추출된 사운드 샘플이 들어 있는 ByteArray 객체입니다.
| |
length:Number — 추출할 사운드 샘플 수입니다. 샘플에는 왼쪽 채널과 오른쪽 채널이 모두 들어 있습니다. 즉, 32비트 부동 소수점 값이 2개 들어 있습니다.
| |
startPosition:Number (default = -1 ) — 추출을 시작할 샘플입니다. 값을 지정하지 않으면 Sound.extract() 를 처음 호출할 때 사운드 시작 부분에서 추출이 시작되고, 이후에 startPosition 값을 사용하지 않고 호출하면 파일 전체에서 순차적으로 진행됩니다.
|
Number — target 매개 변수에 지정된 ByteArray에 작동된 샘플의 수입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
extract()
메서드를 사용하여 오디오 데이터에 액세스합니다.
MP3 데이터는 sourceSnd
라는 Sound 객체에 로드됩니다. 응용 프로그램은 MP3 데이터를 로드할 때 loaded()
함수(sourceSnd
객체의 complete
이벤트에 대한 이벤트 핸들러)를 호출합니다. 두 번째 Sound 객체인 outputSound
는 수정된 오디오를 재생하는 데 사용됩니다. outputSound
객체에는 sampleData
이벤트 리스너가 있어 이 객체의 play()
메서드가 호출된 후 주기적으로 sampleData
이벤트를 전달합니다. upOctave()
메서드는 소스 오디오 데이터를 바탕으로 수정된 오디오 데이터의 바이트 배열을 반환합니다. 소스 데이터의 오디오 샘플을 교대로 건너뛰어 한 옥타브 더 높은 오디오를 반환합니다. sampleData
이벤트의 이벤트 핸들러는 반환된 바이트 배열을 outputSound
객체의 data
속성에 씁니다. data
바이트 배열은 outputSound
객체에 대한 출력 오디오 데이터에 추가됩니다.
이 예제를 테스트하려면 test.mp3 파일을 SWF 파일과 동일한 디렉토리에 추가합니다.
var sourceSnd:Sound = new Sound(); var outputSnd:Sound = new Sound(); var urlReq:URLRequest = new URLRequest("test.mp3"); sourceSnd.load(urlReq); sourceSnd.addEventListener(Event.COMPLETE, loaded); function loaded(event:Event):void { outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound); outputSnd.play(); } function processSound(event:SampleDataEvent):void { var bytes:ByteArray = new ByteArray(); sourceSnd.extract(bytes, 4096); event.data.writeBytes(upOctave(bytes)); } function upOctave(bytes:ByteArray):ByteArray { var returnBytes:ByteArray = new ByteArray(); bytes.position = 0; while(bytes.bytesAvailable > 0) { returnBytes.writeFloat(bytes.readFloat()); returnBytes.writeFloat(bytes.readFloat()); if (bytes.bytesAvailable > 0) { bytes.position += 8; } } return returnBytes; }
load | () | 메서드 |
public function load(stream:URLRequest, context:SoundLoaderContext = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 URL에서 외부 MP3 파일의 로드를 시작합니다. 유효한 URLRequest 객체를 Sound 생성자에 제공하면 생성자가 Sound.load()
를 호출합니다. 유효한 URLRequest 객체를 Sound 생성자에 전달하지 않았거나 null
값을 전달한 경우에는 Sound.load()
를 직접 호출해야만 합니다.
Sound 객체에서 일단 load()
가 호출된 뒤에는 그 Sound 객체로 다른 사운드 파일을 로드할 수 없습니다. 다른 사운드 파일을 로드하려면 새 Sound 객체를 만들어야 합니다.
이 메서드를 사용할 경우 다음과 같은 보안 모델을 생각해 볼 수 있습니다.
- 호출하는 파일이 local-with-file-system 샌드박스에 있고 사운드가 네트워크 샌드박스에 있는 경우에는
Sound.load()
를 호출할 수 없습니다. - local-trusted 또는 local-with-networking 샌드박스에서 액세스하려면 URL 도메인 정책 파일을 통해 웹 사이트에서 권한을 부여 받아야 합니다.
- 일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 개발자 안내서의 "제한적 네트워킹 API"를 참조하십시오.
- SWF 내용이 들어 있는 HTML 페이지에서
allowNetworking
매개 변수(object
및embed
태그)를 설정하여 SWF 파일에서 이 메서드를 사용하지 않게 할 수 있습니다.
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 작업은 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
Adobe AIR에서 application
보안 샌드박스의 내용(AIR 응용 프로그램과 함께 설치되는 내용)은 이러한 보안 제한에 의해 제한되지 않습니다.
보안에 대한 자세한 내용은 Flash Player 개발자 센터 항목: 보안을 참조하십시오.
매개 변수
stream:URLRequest — 외부 MP3 파일을 가리키는 URL입니다.
| |
context:SoundLoaderContext (default = null ) — Sound 객체의 버퍼에 MP3 데이터를 보유하는 최소 시간(밀리초)인 버퍼 시간을 정의할 수 있고 응용 프로그램이 사운드를 로드하기 전에 크로스 도메인 정책 파일을 확인해야 하는지 여부를 지정할 수 있는 선택적 SoundLoader 컨텍스트 객체입니다.
|
오류
IOError — 네트워크 오류로 인해 로드에 실패했습니다.
| |
SecurityError — 신뢰할 수 없는 로컬 파일은 인터넷 통신이 불가능합니다. 이 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는 신뢰할 수 있는 파일로 다시 규정하면 이 오류를 해결할 수 있습니다.
| |
SecurityError — 일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 개발자 안내서의 "제한적 네트워킹 API"를 참조하십시오.
| |
IOError — stream 객체의 digest 속성이 null 이 아닙니다. SWZ 파일(Adobe 플랫폼 구성 요소)을 로드할 때는 URLRequest 객체가 URLLoader.load() 메서드 호출에 사용되는 경우에만 URLRequest 객체의 digest 속성을 설정해야 합니다.
|
예제 ( 예제 사용 방법 )
생성자에서 Adobe의 포드캐스트인 사운드 파일의 위치를 식별하기 위해 URLRequest
객체가 생성됩니다. 이 파일은 try...catch
블록에서 로드되어 파일 로드 중에 혹시 있을 수 있는 오류를 포착합니다. IO 오류가 발생하면 errorHandler()
메서드도 호출되고 진행률 보고를 위해 텍스트 필드에 오류 메시지가 기록됩니다. 로드 작업이 진행되는 동안 ProgressEvent.PROGRESS
이벤트가 전달되고 progressHandler()
메서드가 호출됩니다. 여기에서 ProgressEvent.PROGRESS
이벤트는 로드 진행률을 계산하기 위한 타이머로 사용됩니다.
progressHandler()
메서드는 로드 중인 사운드 데이터의 백분율에 도달하기 위해 bytesLoaded
값(ProgressEvent
객체로 전달됨)을 bytesTotal
값으로 나눕니다. 그런 다음 텍스트 필드에 값을 표시합니다. 파일이 작거나 캐시되거나 로컬 디렉토리에 있으면 진행률이 눈에 잘 띄지 않을 수도 있습니다.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; public class Sound_loadExample extends Sprite { private var snd:Sound = new Sound(); private var statusTextField:TextField = new TextField(); public function Sound_loadExample(){ statusTextField.autoSize = TextFieldAutoSize.LEFT; var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); try { snd.load(req); snd.play(); } catch (err:Error) { trace(err.message); } snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); snd.addEventListener(ProgressEvent.PROGRESS, progressHandler); this.addChild(statusTextField); } private function progressHandler(event:ProgressEvent):void { var loadTime:Number = event.bytesLoaded / event.bytesTotal; var LoadPercent:uint = Math.round(100 * loadTime); statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" + "Bytes being loaded: " + event.bytesLoaded + "\n" + "Percentage of sound file that is loaded " + LoadPercent + "%.\n"; } private function errorHandler(errorEvent:IOErrorEvent):void { statusTextField.text = "The sound could not be loaded: " + errorEvent.text; } } }
loadCompressedDataFromByteArray | () | 메서드 |
public function loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 3, Flash Player 11 |
ByteArray 객체의 MP3 사운드 데이터를 Sound 객체에 로드합니다. 현재 ByteArray 위치에서 데이터를 읽어들이며 작업이 끝나면 지정된 바이트 길이의 끝에 ByteArray 위치가 놓입니다. MP3 사운드 데이터에 ID3 데이터가 포함된 경우 이 함수 호출 도중에 ID3 이벤트가 전달됩니다. ByteArray 객체에 포함된 데이터가 충분하지 않은 경우 이 함수에서 예외가 발생합니다.
매개 변수
bytes:ByteArray | |
bytesLength:uint |
loadPCMFromByteArray | () | 메서드 |
public function loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 3, Flash Player 11 |
ByteArray 객체의 PCM 32비트 부동 소수점 사운드 데이터를 Sound 객체에 로드합니다. 현재 ByteArray 위치에서 데이터를 읽어들이며 작업이 끝났을 때 스테레오 플래그가 설정된 경우 1개 채널 또는 2개 채널을 곱한 지정된 샘플 길이의 끝에 ByteArray 위치가 놓입니다.
Flash Player 11.8부터는 이 함수에 전달할 수 있는 오디오 데이터 양이 제한됩니다. SWF 버전 21 이상에서 이 함수는 이 함수에 전달된 오디오 데이터 양이 1800초를 초과하는 경우 예외가 발생합니다. 즉, samples/sampleRate가 1800 이하여야 합니다. swf 버전 21 미만에서는 전달된 오디오 데이터 양이 12000초를 초과하는 경우 런타임이 실패하며 오류는 발생하지 않습니다. 이 기능은 이전 버전과의 호환성을 위해서만 제공됩니다.
ByteArray 객체에 포함된 데이터가 충분하지 않은 경우 이 함수에서 예외가 발생합니다.
매개 변수
bytes:ByteArray | |
samples:uint | |
format:String (default = "float ")
| |
stereo:Boolean (default = true )
| |
sampleRate:Number (default = 44100.0 )
|
play | () | 메서드 |
public function play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
사운드를 재생하기 위해 새 SoundChannel 객체를 생성합니다. 이 메서드는 사운드를 정지하고 볼륨을 모니터하기 위해 액세스하는 SoundChannel 객체를 반환합니다. 볼륨, 패닝 및 밸런스를 제어하려면 해당 사운드 채널에 할당된 SoundTransform 객체에 액세스합니다.
매개 변수
startTime:Number (default = 0 ) — 재생을 시작하는 초기 위치(밀리초)입니다.
| |
loops:int (default = 0 ) — 사운드 채널이 재생을 중단하기 전에 사운드 루프가 startTime 값으로 돌아가는 횟수를 정의합니다.
| |
sndTransform:flash.media:SoundTransform (default = null ) — 사운드 채널에 할당된 초기 SoundTransform 객체입니다.
|
SoundChannel — 사운드 제어에 사용하는 SoundChannel 객체입니다. 사운드 카드가 없거나 사용 가능한 사운드 채널이 없을 경우, 이 메서드는 null 을 반환합니다. 동시에 사용할 수 있는 사운드 채널의 최대 수는 32개입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
생성자는 Sound.load()
메서드를 호출하여 사운드 데이터를 로드하기 시작합니다. 그런 다음 충분한 데이터가 로드되는 즉시 사운드 재생을 시작할 Sound.play()
메서드를 호출합니다. Sound.play()
메서드는 사운드의 재생을 제어하는 데 사용할 수 있는 SoundChannel 객체를 반환합니다. 텍스트 필드에 지침이 표시됩니다. 사용자가 사운드를 시작하려는 장소의 내용이 이미 로드되었는지 확인할 수 있도록 파일 로드가 완료된 후에 bar
Sprite 객체가 생성되고 표시됩니다. 파일이 성공적으로 로드되면 Event.COMPLETE
이벤트가 전달됩니다. 이 이벤트는 completeHandler()
메서드를 트리거합니다. 그런 다음 completeHandler()
메서드가 막대를 생성하고 표시 목록에 추가합니다. 상호 작용을 지원하기 위해 shape 객체 대신 sprite 객체가 사용됩니다. 사용자가 막대를 클릭하면 clickHandler()
메서드가 트리거됩니다.
clickHandler()
메서드에서 사용자가 클릭하는 x 좌표의 위치 event.localX
는 파일을 시작하려는 위치를 확인하는 데 사용됩니다. 막대는 100픽셀이고 x 좌표 100픽셀에서 시작하기 때문에 위치의 백분율을 확인하기 쉽습니다. 또한 파일이 로드되기 때문에 사운드 파일의 length
속성이 밀리초 단위로 전체 파일의 길이를 갖게 됩니다. 사운드 파일의 길이와 라인의 위치를 사용하여 사운드 파일의 시작 위치를 확인합니다. 사운드 재생을 중단한 후에 선택한 시작 위치에서 사운드 파일이 재시작됩니다. 시작 위치는 startTime
매개 변수로 play()
메서드에 전달됩니다.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.MouseEvent; import flash.media.Sound;; import flash.net.URLRequest; import flash.media.SoundChannel; import flash.events.ProgressEvent; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.IOErrorEvent; public class Sound_playExample1 extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel = new SoundChannel(); private var infoTextField:TextField = new TextField(); public function Sound_playExample1() { var req:URLRequest = new URLRequest("MySound.mp3"); infoTextField.autoSize = TextFieldAutoSize.LEFT; infoTextField.text = "Please wait for the file to be loaded.\n" + "Then select from the bar to decide where the file should start."; snd.load(req); channel = snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); snd.addEventListener(Event.COMPLETE, completeHandler); this.addChild(infoTextField); } private function completeHandler(event:Event):void { infoTextField.text = "File is ready."; var bar:Sprite = new Sprite(); bar.graphics.lineStyle(5, 0xFF0000); bar.graphics.moveTo(100, 100); bar.graphics.lineTo(200, 100); bar.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(bar); } private function clickHandler(event:MouseEvent):void { var position:uint = event.localX; var percent:uint = Math.round(position) - 100; var cue:uint = (percent / 100) * snd.length; channel.stop(); channel = snd.play(cue); } private function errorHandler(errorEvent:IOErrorEvent):void { infoTextField.text = "The sound could not be loaded: " + errorEvent.text; } } }
생성자에서 사운드가 로드되고 간단한 사각형 button
sprite 객체가 생성됩니다. 상호 작용을 지원하기 위해 shape 객체 대신 sprite 객체가 사용됩니다. 여기에서는 사운드 파일이 SWF 파일과 동일한 디렉토리에 있는 것으로 가정합니다. 이 예제에 대한 오류 처리 코드는 없습니다.
2개의 이벤트 리스너가 한 번 또는 두 번의 마우스 클릭에 응답하도록 설정됩니다. 사용자가 한 번 클릭하면 clickHandler()
메서드가 호출되어 사운드를 재생합니다. 사용자가 버튼을 두 번 클릭하면 doubleClickHandler()
메서드가 호출되어 사운드 파일을 두 번 재생합니다. play()
메서드의 두 번째 인수는 1
로 설정되는데, 이는 사운드가 사운드 시작 시간으로 한 번 루프백되고 다시 재생함을 의미합니다. 첫 번째 인수인 시작 시간은 0
으로 설정되는데, 이는 파일이 처음부터 재생됨을 의미합니다.
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.media.Sound; import flash.net.URLRequest; public class Sound_playExample2 extends Sprite { private var button:Sprite = new Sprite(); private var snd:Sound = new Sound(); public function Sound_playExample2() { var req:URLRequest = new URLRequest("click.mp3"); snd.load(req); button.graphics.beginFill(0x00FF00); button.graphics.drawRect(10, 10, 50, 30); button.graphics.endFill(); button.addEventListener(MouseEvent.CLICK, clickHandler); button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler); this.addChild(button); } private function clickHandler(event:MouseEvent):void { snd.play(); } private function doubleClickHandler(event:MouseEvent):void { snd.play(0, 2); } } }
생성자에 있는 이 파일은 try...catch
블록에서 로드되어 파일 로드 중에 혹시 있을 수 있는 오류를 포착합니다. 리스너가 IOErrorEvent
이벤트에 응답하는 사운드 객체에 추가됩니다(errorHandler()
메서드 호출). Event.ENTER_FRAME
이벤트에 응답하는 기본 응용 프로그램에 대해 또 다른 리스너가 추가됩니다. 이 이벤트는 재생 진행률을 보여주기 위한 시간 메커니즘으로 사용됩니다. 마지막으로, 사운드 재생이 완료될 때 Event.SOUND_COMPLETE
이벤트에 응답하는 사운드 채널에 대해 세 번째 리스너가 추가됩니다(soundCompleteHandler()
메서드 호출). soundCompleteHandler()
메서드도 Event.ENTER_FRAME
이벤트의 이벤트 핸들러를 제거합니다.
enterFrameHandler()
메서드는 로드 중인 사운드 데이터의 백분율에 도달하기 위해 bytesLoaded
값(ProgressEvent
객체로 전달됨)을 bytesTotal
값으로 나눕니다. 재생 중인 사운드 데이터의 백분율은 사운드 채널의 position
속성 값을 사운드 데이터의 길이로 나누어 확인할 수 있습니다. 그러나 사운드 데이터가 완전히 로드되지 않은 경우 사운드 객체의 length
속성은 현재 로드된 사운드 데이터의 크기만 표시합니다. 전체 사운드 파일의 대략적인 최종 크기는 현재 사운드 객체의 length
값을 bytesLoaded
속성 값(bytesTotal
속성 값으로 나눈 값)으로 나누어서 계산합니다.
파일이 작거나 캐시에 저장되거나 로컬 디렉토리에 있으면 로드 진행률이 눈에 잘 띄지 않을 수도 있습니다. 또한 사운드 데이터가 로드되기 시작하는 시간과 로드된 데이터가 재생되기 시작하는 시간 사이의 지연 시간은 SoundLoaderContext.buffertime
속성 값으로 확인합니다. 속성 기본값은 1000밀리초이고 재설정할 수 있습니다.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundChannel; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.Event; import flash.events.IOErrorEvent; public class Sound_playExample3 extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel; private var statusTextField:TextField = new TextField(); public function Sound_playExample3(){ statusTextField.autoSize = TextFieldAutoSize.LEFT; var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); try { snd.load(req); channel = snd.play(); } catch (err:Error) { trace(err.message); } snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); this.addChild(statusTextField); } private function enterFrameHandler(event:Event):void { var loadTime:Number = snd.bytesLoaded / snd.bytesTotal; var loadPercent:uint = Math.round(100 * loadTime); var estimatedLength:int = Math.ceil(snd.length / (loadTime)); var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength)); statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" + "Bytes being loaded: " + snd.bytesLoaded + "\n" + "Percentage of sound file that is loaded " + loadPercent + "%.\n" + "Sound playback is " + playbackPercent + "% complete."; } private function errorHandler(errorEvent:IOErrorEvent):void { statusTextField.text = "The sound could not be loaded: " + errorEvent.text; } private function soundCompleteHandler(event:Event):void { statusTextField.text = "The sound has finished playing."; removeEventListener(Event.ENTER_FRAME, enterFrameHandler); } } }
complete | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.COMPLETE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
데이터가 성공적으로 로드되면 전달됩니다.
Event.COMPLETE
상수는 complete
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 로드가 완료된 네트워크 객체입니다. |
관련 API 요소
id3 | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.ID3
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
MP3 사운드에 ID3 데이터를 사용할 수 있을 때 Sound 객체에 의해 전달됩니다.
Event.ID3
상수는 id3
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 현재 이용 가능한 ID3 데이터가 있는 MP3를 로드하는 Sound 객체입니다. target 은 표시 목록에서 이벤트 리스너를 등록한 객체가 아닐 수도 있습니다. 표시 목록에서 현재 이벤트를 처리 중인 객체에 액세스하려면 currentTarget 속성을 사용합니다. |
관련 API 요소
ioError | 이벤트 |
flash.events.IOErrorEvent
속성 IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
로드 작업을 실패하게 만드는 입력/출력 오류가 발생할 때 전달됩니다.
ioError
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
errorID | 특정 오류와 연결된 참조 번호입니다(AIR만 해당). |
target | 입력/출력 오류가 발생한 네트워크 객체입니다. |
text | 오류 메시지로 표시될 텍스트입니다. |
관련 API 요소
open | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.OPEN
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
로드 작업이 시작될 때 전달됩니다.
Event.OPEN
상수는 open
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 연결을 설정한 네트워크 객체입니다. |
관련 API 요소
progress | 이벤트 |
flash.events.ProgressEvent
속성 ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
로드 작업이 진행되어 데이터가 수신될 때 전달됩니다.
progress
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
bytesLoaded | 리스너가 이벤트를 처리할 때 로드된 항목 수 또는 바이트 수입니다. |
bytesTotal | 로드 프로세스가 완료되면 최종적으로 로드될 총 바이트 수 또는 항목 수입니다. |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 진행률을 보고하는 객체입니다. |
관련 API 요소
sampleData | 이벤트 |
flash.events.SampleDataEvent
속성 SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
런타임이 새 오디오 데이터를 요청할 때 전달됩니다.
type
속성(SampleDataEvent
이벤트 객체)의 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
position | 오디오 데이터를 제공할 위치입니다. |
예제 ( 예제 사용 방법 )
var mySound:Sound = new Sound(); function sineWaveGenerator(event:SampleDataEvent):void { for ( var c:int=0; c<8192; c++ ) { event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); } } mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); mySound.play();
관련 API 요소
package { import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; public class SoundExample extends Sprite { private var url:String = "MySound.mp3"; private var song:SoundChannel; public function SoundExample() { var request:URLRequest = new URLRequest(url); var soundFactory:Sound = new Sound(); soundFactory.addEventListener(Event.COMPLETE, completeHandler); soundFactory.addEventListener(Event.ID3, id3Handler); soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler); soundFactory.load(request); song = soundFactory.play(); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function id3Handler(event:Event):void { trace("id3Handler: " + event); } private function ioErrorHandler(event:Event):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: " + event); } } }
Tue Jun 12 2018, 03:17 PM Z