Работа с встроенными звуками

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Использование встроенных звуков вместо загрузки звуков из внешнего файла больше всего подходит для небольших файлов, которые используются в качестве индикаторов в пользовательском интерфейсе приложения, например звуки, воспроизводимые при нажатии кнопок.

Когда аудиофайл встраивается в приложение, размер полученного SWF-файла увеличивается на размер встроенного файла. Другими словами, встраивание больших звуковых файлов в приложение может привести к нежелательному увеличению размера SWF-файла.

Выбор метода встраивания аудиофайла в SWF-файл приложения зависит от среды разработки.

Использование встроенных аудиофайлов в Flash

Инструмент разработки Flash позволяет импортировать звуки в разных форматах и сохранять их в виде символов в библиотеке. После этого звуки можно добавлять в кадры на временной шкале или в кадры состояния кнопки, использовать их для поведений или непосредственно в коде ActionScript. В этом разделе описывается, как использовать звуки, встроенные в код ActionScript с помощью инструмента разработки Flash. Сведения о других способах использования встроенных звуков 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() , как показано выше.

Использование встроенных аудиофайлов в Flex

Существует много способов встраивания звуковых ресурсов в приложение Flex, включая следующие:

  • использование в сценарии тега метаданных [Embed] ;

  • использование инструкции @Embed в MXML для назначения встроенного ресурса в качестве свойства такого компонента, как Button или SoundEffect;

  • использование инструкции @Embed в CSS-файле.

В этом разделе описывается первый вариант, то есть встраивание звуков в код ActionScript приложения Flex с помощью тега метаданных [Embed] .

Чтобы встроить ресурс в код ActionScript, используйте тег метаданных [Embed] .

Поместите звуковой файл в основной исходной папке или в другой папке, включенной в путь сборки проекта. Когда компилятор обнаружит тег метаданных Embed, он создаст класс встроенных ресурсов. Обратиться к классу можно через переменную типа данных Class, объявленную сразу после тега метаданных [Embed] .

Следующий код встраивает звук с именем 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, он должен быть передан в качестве экземпляра класса mx.core.SoundAsset, а не класса Sound. Подобный пример использования класса SoundAsset см. в разделе «Классы встроенных ресурсов» в документе «Изучение ActionScript 3.0».