加载和播放多个.mp3文件

时间:2010-10-25 20:53:28

标签: flash actionscript-3

我正在尝试设置一个.flv文件,该文件将包含两个不同声音的按钮。 我已经能够得到第一件装载和播放和停止,但当我尝试加载第二件时,我绊倒了。 我仍然是一个新手,但我认为我理解基本问题 - Actionscript无法区分一个声音请求和另一个声音请求。问题是,如何修复此问题并获取动作脚本以了解我正在尝试加载和播放与两个不同按钮相关的两种不同声音? 我收到错误代码,例如“1151:命名空间内部的定义s存在冲突”。 ,“重复功能”问题和“重复变量”警告。 我在这个网站上看到了一些关于可回收声音对象的讨论。我想我问了一个类似的问题,但是虽然提出这个问题的人也发布了一个解决方案,但我还是无法让它发挥作用。 这是代码:

var s:Sound = new Sound();
s.load(new URLRequest("http://www.website.com/Water.mp3"));

wellsplay_btn.addEventListener(MouseEvent.CLICK,playSound);
wellsstop_btn.addEventListener(MouseEvent.CLICK,stopSound);

function playSound(e:MouseEvent):void
{
sc = s.play();
}

function stopSound(e:MouseEvent):void
{
sc.stop();
}

var s:Sound = new Sound();
 s.load(new URLRequest("http://www.website.com/Wells.mp3"));

wellsplay_btn.addEventListener(MouseEvent.CLICK,playSound);
wellsstop_btn.addEventListener(MouseEvent.CLICK,stopSound);

function playSound(e:MouseEvent):void
{
sc = s.play();
}

function stopSound(e:MouseEvent):void
{
sc.stop();
}

其余命令工作正常。只有这部分我遇到了麻烦。在此先感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

继续留下Tyler Egeto的评论,为Sound实例提供一个新名称意味着执行以下操作

 //The variables names are s1 & s2
 var s1:Sound = new Sound();
 var s2:Sound = new Sound();

第一个“声音”,在您的变量名称之后是您的类名。 AS3是一种强类型语言,这意味着您需要声明要声明的变量的类型。在这种情况下,它是Sound类的一个实例。

为了播放(或停止)特定的Sound实例,您需要确定点击了哪个按钮并做出相应的反应

 function playSound(e:MouseEvent):void
 {
     switch( e.currentTarget )
     {
          case wellsplay_btn:
           sc = s1.play();
           break;

          case waterplay_btn:
           sc = s2.play();
           break;
     }

 }

答案 1 :(得分:0)

这是因为您要声明变量var s:Sound两次,为它们使用不同的名称。