패키지 | flash.events |
클래스 | public class SampleDataEvent |
상속 | SampleDataEvent Event Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
이 이벤트는 다음과 같은 두 가지 용도가 있습니다.
- Sound 객체의 경우 동적으로 생성된 오디오 데이터 제공
- Microphone 객체의 경우 오디오 데이터 가져오기
Sound 객체를 사용하여 동적으로 오디오 생성 - sampleData
이벤트를 사용하여 동적으로 생성된 오디오를 재생합니다. 이 환경에서 Sound 객체에는 실제로 사운드 데이터가 들어 있지 않습니다. 대신 이 객체는 sampleData
이벤트의 핸들러로 할당된 함수를 사용하여 스트리밍되어 들어오는 사운드 데이터에 대한 소켓 역할을 합니다.
함수에서 ByteArray.writeFloat()
메서드를 사용하여 재생할 샘플링 데이터가 들어 있는 이벤트의 data
속성에 씁니다.
Sound 객체가 MP3 파일을 로드하지 않은 경우 play()
메서드를 호출하면 객체가 sampleData
이벤트를 전달하기 시작하여 사운드 샘플을 요청합니다. Sound 객체는 사운드가 재생되면서 계속 이벤트를 전송하다가 사용자가 데이터 제공을 중단하거나 SoundChannel 객체의 stop()
메서드가 호출되면 전송을 멈춥니다.
이벤트 지연 시간은 플랫폼마다 다르며 이후 버전의 Flash Player 또는 AIR에서 변경될 수 있습니다. 따라서 특정 지연 시간을 사용하지 마십시오. 대신 ((SampleDataEvent.position/44.1) - SoundChannelObject.position)
을 사용하여 계산하는 것이 좋습니다.
SampleDataEvent 객체의 data
속성에 2048에서 8192 사이의 샘플을 제공합니다. 최상의 성능을 위해 샘플을 최대한 많이 제공하는 것이 좋습니다. 제공하는 샘플이 적을수록 재생 중 잡음이 발생하거나 고르지 않게 재생될 가능성이 높습니다. 이러한 동작은 플랫폼마다 다를 수 있으며 여러 가지 상황(예: 브라우저 크기 조절 시)에서 발생할 수 있습니다. 한 플랫폼에서는 2048 샘플만 제공하는 코드가 문제없이 작동하지만 같은 코드가 다른 플랫폼에서는 잘 작동하지 않을 수 있습니다. 지연 시간을 최대한 낮추려면 사용자가 데이터 양을 선택할 수 있게 하는 것이 좋습니다.
2048보다 적은 샘플을 제공하면 Sound 객체에서 나머지 샘플을 재생한 다음 사운드 파일 끝에 도달한 것처럼 사운드를 중단하여 complete
이벤트를 생성합니다.
Sound 객체의 extract()
메서드를 사용하여 사운드 데이터를 추출한 다음 재생을 위해 동적 스트림에 기록할 수 있습니다.
sampleData
이벤트를 Sound 객체와 함께 사용할 때 활성화되는 Sound 메서드는 extract()
와 play()
뿐입니다. 다른 메서드나 속성을 호출하면 "invalid call" 예외가 발생합니다. SoundChannel 객체의 모든 메서드와 속성은 계속 사용할 수 있습니다.
마이크 오디오 캡처 - sampleData
이벤트를 사용하여 마이크에서 오디오 데이터를 캡처할 수 있습니다. sampleData
이벤트에 대한 이벤트 리스너를 추가하면 오디오 샘플이 사용할 수 있는 상태가 될 때 Microphone이 해당 이벤트를 전달합니다.
이벤트 핸들러 함수에서 ByteArray.readFloat()
메서드를 사용하여 샘플링된 데이터가 포함된 이벤트의 data
속성을 읽습니다. 이벤트에는 여러 샘플이 포함되므로 while
루프를 사용하여 사용 가능한 데이터를 읽어야 합니다.
var soundBytes:ByteArray = new ByteArray(); while(event.data.bytesAvailable) { var sample:Number = event.data.readFloat(); soundBytes.writeFloat(sample); }
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
bubbles : Boolean [읽기 전용]
이벤트가 버블링 이벤트인지 여부를 나타냅니다. | Event | ||
cancelable : Boolean [읽기 전용]
해당 이벤트와 연관된 비헤이비어를 차단할 수 있는지 여부를 나타냅니다. | Event | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
currentTarget : Object [읽기 전용]
이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. | Event | ||
data : ByteArray
오디오 스트림의 데이터입니다. | SampleDataEvent | ||
eventPhase : uint [읽기 전용]
이벤트 흐름에서 현재 단계입니다. | Event | ||
position : Number
오디오 스트림에서 데이터의 위치입니다. | SampleDataEvent | ||
target : Object [읽기 전용]
이벤트 대상입니다. | Event | ||
type : String [읽기 전용]
이벤트 유형입니다. | Event |
메서드 | 정의 주체 | ||
---|---|---|---|
SampleDataEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, theposition:Number = 0, thedata:ByteArray = null)
오디오 데이터 이벤트에 대한 정보가 포함된 이벤트 객체를 만듭니다. | SampleDataEvent | ||
[재정의]
SampleDataEvent 객체의 복사본을 만들고 각 속성의 값을 원본과 동일하게 설정합니다. | SampleDataEvent | ||
사용자 정의 ActionScript 3.0 Event 클래스에서 toString() 메서드를 구현하기 위한 유틸리티 함수입니다. | Event | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
이벤트에서 preventDefault() 메서드가 호출되었는지 여부를 확인합니다. | Event | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
이벤트의 기본 비헤이비어를 취소할 수 있는 경우, 그 비헤이비어를 취소합니다. | Event | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
이벤트 흐름에서 현재 노드 및 그 후속 노드에 있는 모든 이벤트 리스너가 처리되지 않도록 합니다. | Event | ||
이벤트 흐름에서 현재 노드의 후속 노드에 있는 모든 이벤트 리스너가 처리되지 않도록 합니다. | Event | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
[재정의]
SampleDataEvent 객체의 모든 속성이 들어 있는 문자열을 반환합니다. | SampleDataEvent | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object |
상수 | 정의 주체 | ||
---|---|---|---|
SAMPLE_DATA : String = "sampleData" [정적]
SampleDataEvent 이벤트 객체의 type 속성 값을 정의합니다. | SampleDataEvent |
data | 속성 |
position | 속성 |
SampleDataEvent | () | 생성자 |
public function SampleDataEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, theposition:Number = 0, thedata:ByteArray = null)
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
오디오 데이터 이벤트에 대한 정보가 포함된 이벤트 객체를 만듭니다. Event 객체는 매개 변수로 이벤트 리스너에 전달됩니다.
매개 변수type:String — 이벤트 유형입니다. 이 값은 Event.SAMPLE_DATA 입니다.
| |
bubbles:Boolean (default = false ) — Event 객체가 이벤트 흐름의 버블링 단계에 참여하는지 여부를 결정합니다.
| |
cancelable:Boolean (default = false ) — Event 객체를 취소할 수 있는지 여부를 결정합니다.
| |
theposition:Number (default = 0 ) — 오디오 스트림에서 데이터의 위치입니다.
| |
thedata:ByteArray (default = null ) — 데이터 바이트 배열입니다.
|
clone | () | 메서드 |
toString | () | 메서드 |
override public function toString():String
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
SampleDataEvent 객체의 모든 속성이 들어 있는 문자열을 반환합니다. 문자열의 형식은 다음과 같습니다.
[SampleDataEvent type=value bubbles=value cancelable=value theposition=value thedata=value]
String — SampleDataEvent 객체의 모든 속성이 들어 있는 문자열입니다.
|
SAMPLE_DATA | 상수 |
public static const SAMPLE_DATA:String = "sampleData"
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
type
속성(SampleDataEvent
이벤트 객체)의 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
position | 오디오 데이터를 제공할 위치입니다. |
관련 API 요소
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();
Tue Jun 12 2018, 03:17 PM Z