gpt4 book ai didi

actionscript-3 - as3声音类卸载声音

转载 作者:行者123 更新时间:2023-12-02 22:21:42 26 4
gpt4 key购买 nike

我已经尝试了HOURS个。必须有一个简单的解决方案来停止声音并将其卸载到as3中。

这不是我的全部代码,但是总之,我正在加载随机声音。我需要certian var在函数之外,因此我可以将它们与其他函数一起引用以显示进度条。

如何卸载声音,以便可以使用相同的名称加载新声音而第二次调用时不会出错?

在此测试中,我有两个按钮。播放声音和停止声音按钮。

这是我的代码:

var TheSound:Sound = new Sound();
var mySoundChannel:SoundChannel = new SoundChannel();

PlayButton.addEventListener(MouseEvent.CLICK, PlaySound);
StopButton.addEventListener(MouseEvent.CLICK, Stopsound);

function PlaySound(e:MouseEvent)
{
TheSound.load(new URLRequest("http://www.MyWebsite.com/Noel.mp3"));
mySoundChannel = TheSound.play(0);
}

function StopSound(e:MouseEvent)
{
delete TheSound;
}

这是我得到的错误:
Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.
at flash.media::Sound/_load()
at flash.media::Sound/load()
at Untitled_fla::MainTimeline/PlaySound()[Untitled_fla.MainTimeline::frame1:21]

更新....我尝试停止声音,然后按照以下步骤进行卸载
mySoundChannel.stop();
TheSound.close();

但是现在我得到这个错误:
Error: Error #2029: This URLStream object does not have a stream opened.
at flash.media::Sound/close()
at Untitled_fla::MainTimeline/shut1()[Untitled_fla.MainTimeline::frame1:35]

我相信我离我更近了。到目前为止,非常感谢您的帮助。

最佳答案

为了停止播放声音,您首先必须告诉SoundChannel实例停止播放,如下所示:

mySoundChannel.stop();

完成此操作后,可以通过调用close方法关闭声音实例使用的流,如下所示:
TheSound.close();

另外,在as3中很少使用delete关键字,在某些方法试图访问要删除的变量时,您不应使用delete关键字。如果要处置当前分配给TheSound变量的实例,则应将其值设置为null。这样,Flash会在找到适当的时间后正确地垃圾回收不再使用的旧Sound实例。

关于actionscript-3 - as3声音类卸载声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com