포함된 사운드를 사용한 작업

Flash Player 9 이상, Adobe AIR 1.0 이상

외부 파일로부터 사운드를 로드하는 대신 포함된 사운드를 사용하는 것은 응용 프로그램의 사용자 인터페이스에서 지시자로 사용되는 작은 사운드(예: 버튼을 클릭했을 때 재생되는 사운드)에 가장 유용합니다.

사운드 파일을 응용 프로그램에 포함시키면 SWF 파일의 크기는 사운드 파일의 크기만큼 증가합니다. 즉, 응용 프로그램에 대용량 사운드 파일을 포함시키면 SWF 파일의 크기가 지나치게 커질 수 있습니다.

사운드 파일을 응용 프로그램의 SWF 파일에 포함시키는 정확한 방법은 개발 환경에 따라 다릅니다.

포함된 사운드 파일을 Flash에서 사용

Flash 제작 도구를 사용하면 다양한 사운드 포맷의 사운드를 가져와서 라이브러리에 심볼로 저장할 수 있습니다. 그런 다음, 사운드를 타임라인 내의 프레임 또는 버튼 상태의 프레임에 할당한 후 비헤이비어와 함께 사용하거나, 사운드를 직접 ActionScript 코드에서 사용할 수도 있습니다. 이 단원에서는 Flash 제작 도구를 활용하여 ActionScript 코드에 포함된 사운드를 사용하는 방법에 대해 설명합니다. 포함된 사운드를 Flash에서 사용하는 기타 방법에 대한 자세한 내용은 Flash 사용 의 "사운드 가져오기"를 참조하십시오.

Flash 제작 도구를 사용하여 사운드 파일을 포함하려면

  1. [파일] > [가져오기] > [라이브러리로 가져오기]를 선택한 다음 사운드 파일을 하나 선택하여 가져옵니다.

  2. 가져온 파일 이름을 [라이브러리] 패널에서 마우스 오른쪽 버튼으로 클릭한 후 [속성]을 선택합니다. [ActionScript에 내보내기] 체크 상자를 클릭합니다.

  3. [클래스] 필드에 이 포함된 사운드를 ActionScript에서 참조할 때 사용할 이름을 입력합니다. 기본적으로 이 필드의 사운드 파일 이름이 사용됩니다. "DrumSound.mp3"의 경우와 같이 파일 이름에 마침표가 포함된 경우 "DrumSound" 등으로 변경해야 합니다. ActionScript는 클래스 이름에 마침표 문자를 허용하지 않습니다. [기본 클래스] 필드에는 flash.media.Sound가 여전히 표시됩니다.

  4. [확인]을 클릭합니다. 이 클래스에 대한 정의를 클래스 경로에서 찾을 수 없다는 대화 상자가 나타날 수 있습니다. [확인]을 클릭하고 계속합니다. 사용자 응용 프로그램의 클래스 경로에 있는 클래스 이름과 일치하지 않는 클래스 이름을 입력하는 경우, flash.media.Sound 클래스에서 상속된 새 클래스가 자동으로 생성됩니다.

  5. 포함된 사운드를 사용하려면 ActionScript에서 해당 사운드에 대한 클래스 이름을 참조합니다. 예를 들어 다음 코드는 자동으로 생성된 DrumSound 클래스의 새 인스턴스를 만듭니다.

    var drum:DrumSound = new DrumSound(); 
    var channel:SoundChannel = drum.play();

    DrumSound는 flash.media.Sound 클래스의 하위 클래스이므로 위에 나와 있는 play() 메서드를 포함하여 Sound 클래스의 메서드와 속성을 상속합니다.

포함된 사운드 파일을 Flex에서 사용

다음을 비롯한 다양한 방법으로 사운드 에셋을 Flex 응용 프로그램에 포함할 수 있습니다.

  • 스크립트에 [Embed] 메타데이터 태그 사용

  • MXML에 @Embed 지시문을 사용하여 Button 또는 SoundEffect와 같은 구성 요소의 속성으로 포함된 에셋 할당

  • CSS 파일에 @Embed 지시문 사용

이 단원에서는 첫 번째 옵션( [Embed] 메타데이터 태그를 사용하여 Flex 응용 프로그램 내의 ActionScript 코드에 사운드를 포함하는 방법)에 대해 설명합니다.

ActionScript 코드에 에셋을 포함하려면 [Embed] 메타데이터 태그를 사용합니다.

기본 소스 폴더나 프로젝트의 빌드 경로에 있는 다른 폴더에 사운드 파일을 배치합니다. 컴파일러가 Embed 메타데이터 태그를 발견하면 포함된 에셋 클래스가 만들어집니다. [Embed] 메타데이터 태그 바로 뒤에 선언하는 Class 데이터 유형의 변수를 통해 클래스에 액세스할 수 있습니다.

다음 코드는 smallSound.mp3라는 사운드를 포함하고 soundClass 변수를 사용하여 해당 사운드와 연관된 포함 에셋 클래스에 대한 참조를 저장합니다. 그런 다음 이 코드에서는 포함된 에셋 클래스의 인스턴스를 만들고 Sound 클래스 인스턴스로 형 변환한 후 해당 인스턴스에서 play() 메서드를 호출합니다.

package 
{ 
    import flash.display.Sprite; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 
 
    public class EmbeddedSoundExample extends Sprite 
    { 
        [Embed(source="smallSound.mp3")] 
        public var soundClass:Class; 
         
        public function EmbeddedSoundExample() 
        { 
            var smallSound:Sound = new soundClass() as Sound; 
            smallSound.play(); 
        } 
    } 
}

포함된 사운드를 사용하여 Flex 구성 요소의 속성을 설정하려면 Sound 클래스 인스턴스 대신 mx.core.SoundAsset 클래스 인스턴스로 형 변환해야 합니다. SoundAsset 클래스를 사용하는 유사한 예제는 ActionScript 3.0 학습의 "포함된 에셋 클래스"를 참조하십시오.