0

我使用按钮创建了一个简单的 Flash 播放列表,在我的舞台上,我有 4 个按钮,分别是歌曲 1、歌曲 2、停止和播放的按钮。我有一个工作代码,但我决定修改它,因为我以前的代码就像,每首歌都有每个停止和播放按钮,所以我创建了这个有一个动态停止和播放,我创建了一个函数每首歌曲,该函数将更改要加载的歌曲的文件名,

这就是问题所在,所以我首先选择一首歌曲(歌曲 1 或歌曲 2)然后单击停止,然后当我选择一首新歌曲时出现此错误

错误:错误 #2037:函数调用顺序不正确,或者之前的调用不成功。在 flash.media::Sound/_load() 在 flash.media::Sound/load() 在 playlist_fla::MainTimeline/songSelect1()

我认为它没有调用第二个函数,因为我看不到我放入其中的跟踪,无论如何这是我的代码,对于长篇文章感到抱歉,

提前致谢

var mySound:Sound = new Sound();
var myChannel:SoundChannel = new SoundChannel();
var myTransform = new SoundTransform();
var lastPosition:Number = 0;
var song;

song1.addEventListener(MouseEvent.CLICK,songSelect1);
function songSelect1(e:MouseEvent):void{
    song = "<filenameofthe1stsong>";
    mySound.load(new URLRequest(song));
    myTransform.volume = 0.5;
    myChannel.soundTransform = myTransform;
    lastPosition=0;
    trace(1);
}

song2.addEventListener(MouseEvent.CLICK,songSelect2);
function songSelect2(e:MouseEvent):void{
    song = "<filenameofthe2ndsong>";
    mySound.load(new URLRequest(song));
    myTransform.volume = 0.5;
    myChannel.soundTransform = myTransform;
    lastPosition=0;
    trace(2);
}

btnStop.addEventListener(MouseEvent.CLICK,onClickStop);
function onClickStop(e:MouseEvent):void{
    lastPosition = myChannel.position;
    myChannel.stop();
}

btnPlay.addEventListener(MouseEvent.CLICK,onClickPlay);
function onClickPlay(e:MouseEvent):void{
    myChannel = mySound.play(lastPosition);
    myChannel.soundTransform = myTransform();
}
4

1 回答 1

0

更正:

根据 Adob​​e:

在 Sound 对象上调用 load() 后,您以后不能将不同的声音文件加载到该 Sound 对象中。要加载不同的声音文件,请创建一个新的 Sound 对象。

因此,创建一个新的声音对象将是修复它的唯一方法。

- - - 原帖 - - -

如果您在闪存设置中启用调试,则更容易确定究竟是哪一行导致了问题。也就是说,除了两次定义声音变换之外,您的代码看起来并没有错误。尝试这个:

var mySound:Sound = new Sound();
var myChannel:SoundChannel = new SoundChannel();
var myTransform = new SoundTransform();
myChannel.soundTransform = myTransform;

var lastPosition:Number = 0;
var song;

song1.addEventListener(MouseEvent.CLICK,songHandler);
song2.addEventListener(MouseEvent.CLICK,songHandler);
btnStop.addEventListener(MouseEvent.CLICK,onClickStop);
btnPlay.addEventListener(MouseEvent.CLICK,onClickPlay);

function songHandler(e:MouseEvent):void {
    switch (e.currentTarget.name) {
        case "song1":
            songSelect("<filenameofthe1stsong>")
            break;
        case "song2":
            songSelect("<filenameofthe2ndsong>")
            break;
    }
}

function songSelect(songPath:String):void {
    mySound.load(new URLRequest(songPath));
    myChannel.soundTransform.volume = 0.5;
    lastPosition = 0;
    trace("Loading " + songPath);
}

function onClickStop(e:MouseEvent):void {
    lastPosition = myChannel.position;
    myChannel.stop();
}

function onClickPlay(e:MouseEvent):void {
    myChannel = mySound.play(lastPosition);
    myChannel.soundTransform = myTransform();
}
于 2013-02-15T15:32:29.670 回答