Управление потоковым звуком в Flex (Новичок) - PullRequest
0 голосов
/ 25 августа 2010

Я предполагаю, что мое отсутствие знаний (я только начал изучать Flex вчера, ха!) Является причиной моей неспособности понять, как заставить это работать правильно - это может даже быть просто проблемой позиционирования кода.

У меня есть несколько файлов MP3, которые я пытаюсь транслировать. Сейчас я просто пытаюсь запустить и остановить основной MP3. У меня успешно воспроизводится MP3, но у меня проблема с остановкой. Вот мой текущий код:

<mx:Script>
<![CDATA[
    import flash.events.Event;
    import flash.media.*;
    import flash.media.Sound;
    import flash.media.SoundLoaderContext;
    import flash.net.URLRequest;
    import mx.controls.Button;

    //set current track & load song
            var currentTrack:Number = 1;
    var song:Sound = new Sound();
    var req:URLRequest = new URLRequest("../assets/0"+currentTrack+".mp3");
    var context:SoundLoaderContext = new SoundLoaderContext(8000, true);

    //CREATE BUTTONS (being loaded in mx:application on load)
            private function createControls():void {
        var playButton:Button = new Button();
        playButton.label = "PLAY";
        playButton.id = "playButton";
        playButton.addEventListener(MouseEvent.CLICK, clickPlayHandler);
        playerControls.addChild(playButton);

        var stopButton:Button = new Button();
        stopButton.label = "STOP";
        stopButton.id="stopButton";
        stopButton.addEventListener(MouseEvent.CLICK, clickStopHandler);
        playerControls.addChild(stopButton);
    }

    //HANDLE CLICKS
    private function clickPlayHandler(event:Event):void {
        var button:Button = event.currentTarget as Button;
        song.load(req, context);
        song.play();
    }
    private function clickStopHandler(event:Event):void {
        var button:Button = event.currentTarget as Button;
        //This is not working...
                    song.close();
    }
]]>

Итак, у меня работает song.play, но song.close не останавливает поток, он ничего не делает. Любая подсказка, как я мог сделать это правильно / что я делаю неправильно?

Спасибо! :)

1 Ответ

3 голосов
/ 25 августа 2010

Вам нужно использовать класс SoundChannel, чтобы остановить воспроизведение звука, вы назначаете его следующим образом:

private var channel:SoundChannel = new SoundChannel();

//first assign it to the sound variable
channel = sound.play();

//then you can stop your sound this way
channel.stop();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...