0

我正在尝试编辑现有的 Flash 模板。使用 Flash CS6 和 ActionScript 3.0 --- 有点新...

我在源文件中有一个页脚剪辑。我在那里编辑并添加了两个按钮。主 .fla 是模板的名称,它有一个单层和使用 main.as 定义和控制的动作层

通过使用以下脚本在此处编写动作层,我能够成功播放音乐:

var music:Sound = new Sound(new URLRequest("music.mp3"));
var sc:SoundChannel = music.play();

声音播放得很好。我现在面临的问题是添加播放和停止按钮。我使用以下脚本来实现这一点:

import flash.events.Event;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.media.SoundChannel;
import flash.events.MouseEvent;

var music:Sound = new Sound(new URLRequest("music.mp3"));
var sc:SoundChannel = music.play();

btnStop.addEventListener(MouseEvent.CLICK, stopMusic);

function stopMusic(Event:MouseEvent):void{
    sc.stop;
}

btnPlay.addEventListener(MouseEvent.CLICK, playMusic);
function playMusic(Event:MouseEvent):void{
    sc = music.play();
}

在这里我得到错误:

场景 1,图层“动作”,第 1 帧,第 10 行 1061:通过静态类型 Class 的引用调用可能未定义的方法 addEventListener。

请指导我如何纠正它...

4

1 回答 1

1

我会试着亲切地指导你。

您的错误是告诉您 btnStop 类中没有名为 addEventListener 的静态方法。当你给一个 mc 一个名字时,它会创建一个新的类。你正在做的就像在做......

Sound.play();

当你想要 music.play();

要解决此问题,请单击设计部分中的按钮,在属性面板中向右转,您需要为按钮指定一个实例名称“btnStop”。您也必须对 btnPlay 按钮执行相同操作。现在,当您在代码中调用 btnStop 时,您将调用按钮的实例而不是类本身。

此外,在您的 stopMusic 功能中,您应该具有:

sc.stop();

代替:

sc.stop;

此外,您的两个函数中的参数名称不能是“事件”事件是 AS3 API 中的类的名称。尝试使用参数名称“e”或“事件”(大小写很重要)。

于 2012-07-24T20:41:20.430 回答