0

我有一个简单的按钮,可以播放一个小的 MP3 文件,循环播放 30 次。MP3 从服务器 (urlMP3) 流式传输。

我可以在我的 Galaxy S2 上看到它为 30 个循环中的每一个循环访问服务器。是每次循环下载 MP3 还是下载一次并从手机内存中播放?

//Button 'audioYes' to play audio loop x 30
var soundLoop:Sound = new Sound();
var soundChannel:SoundChannel;
var soundLoopUrl:URLRequest = new URLRequest(urlMP3);

audioYes.addEventListener(MouseEvent.CLICK, f2_MouseClickHandler);

function f2_MouseClickHandler(event:MouseEvent):void {
    soundLoop.load(soundLoopUrl);
    soundLoop.play(0, 30);
}

如果每次都在下载,那么下载一次然后播放的好方法是什么?谢谢你的帮助。

编辑:2012 年 9 月 1 日我创建了一个简单的 flash 文件,并添加了@Rytis 提供的以下内容。我从最后一行收到错误,this.mySound.play “错误 #1009:无法访问空对象引用的属性或方法。” 我该怎么办?

import flash.media.Sound;
import flash.net.URLLoader;
import flash.display.Loader;

var mySound:Sound = new Sound();
var myurlLoader:URLLoader = new URLLoader();

myurlLoader.addEventListener(Event.COMPLETE, this.onSoundLoadComplete)
myurlLoader.load(new URLRequest("01.mp3"))

function onSoundLoadComplete(event:Event):void{
this.mySound = URLLoader(event.target).data as Sound;
this.mySound.play(0,30);
}
4

1 回答 1

2

简短的回答 - 在播放之前下载声音并将其存储到变量中。

例子:

package {
    import flash.events.Event;
    import flash.media.Sound;
    import flash.net.URLLoader;
    import flash.net.URLRequest;

public class SoundLoadTest {

    protected var sound     : Sound;

    public function SoundLoadTest () {

        var urlLoader : URLLoader = new URLLoader();
        urlLoader.addEventListener( Event.COMPLETE, this.onSoundLoadComplete )
        urlLoader.load( new URLRequest( "path/to/sound.file" ) )

    }

    protected function onSoundLoadComplete ( event : Event) : void {

        // save loaded sound to a class field
        this.sound = URLLoader( event.target ).data as Sound;

        // start playing sound
        this.sound.play( 0, 30 );

    }

}

}
于 2012-08-27T11:24:09.150 回答