Как можно приостановить / воспроизвести встроенный звук в AS3 flash - PullRequest
2 голосов
/ 31 июля 2009

У меня звук продолжительностью 1:30 мин. Я вставил его в свой SWF и настроил его для синхронизации с кадром. Мне нужно, чтобы иметь возможность приостановить и воспроизвести этот звук с помощью ActionScript.

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

5 голосов
/ 14 июня 2011
//number that is redefined when the pause button is hit
var pausePoint:Number = 0.00;

//a true or false value that is used to check whether the sound is currently playing
var isPlaying:Boolean;

//think of the soundchannel as a speaker system and the sound as an mp3 player
var soundChannel:SoundChannel = new SoundChannel();
var sound:Sound = new Sound(new URLRequest("SOUND.mp3"));

//you should set the xstop and xplay values to match the instance names of your stop button and play/pause buttons
xstop.addEventListener(MouseEvent.CLICK, clickStop);
xplay.addEventListener(MouseEvent.CLICK, clickPlayPause);

soundChannel = sound.play();
isPlaying = true;

function clickPlayPause(evt:MouseEvent) {
    if (isPlaying) {
        pausePoint = soundChannel.position;
        soundChannel.stop();
        isPlaying = false;
    } else {
        soundChannel = sound.play(pausePoint);
        isPlaying = true;
    }
}

function clickStop(evt:MouseEvent) {
    if (isPlaying) {
        soundChannel.stop();
        isPlaying = false;
    }
    pausePoint = 0.00;
}
3 голосов
/ 15 августа 2009

Я только что проверил, как оно работает.

  1. Я сделал MovieClip, который просто имеет звук на временной шкале (timeline достаточно долго, чтобы вместить все звук)
  2. Я установил Синхронизировать в Поток из Панели свойств на слое это имеет звук. Это означает, что звук будет синхронизирован с кадры.
  3. Я добавил две кнопки для проверки управления звуком, что просто контролировать клип, который держит звук, он синхронизирован с кадрами.

Вот основной код:

//playBtn and pauseBtn are two basic buttons
//sound is the movie clip that holds the synched sound in its timeline
playBtn.addEventListener(MouseEvent.CLICK, playSound);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseSound);

function playSound(event:MouseEvent):void{
    sound.play();
}
function pauseSound(event:MouseEvent):void{
    sound.stop();
}

Надеюсь, это поможет

0 голосов
/ 16 августа 2009

Если вы хотите управлять встроенным звуком глобально, есть класс AS3 с именем SoundMixer. Вы можете управлять всем звуком глобально, как показано ниже, код

SoundMixer.soundTransform = new SoundTransform(0); //This will mute all sound from SWF.
SoundMixer.soundTransform = new SoundTransform(1); //This will unmute all sound from SWF.

Но если вы хотите управлять отдельными звуками, встроенными в MovieClip s, вышеуказанный метод не сработает. В этом случае каждый класс Sprite и MovieClip имеет свойство с именем soundTransform. Вы можете изменить soundTransform свойство объектов MovieClip или Sprite и управлять ими.

Вы также можете задать связь с Sound в библиотеке и создавать звук динамически. Таким образом, синхронизация не может быть достигнута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...