ActionScript 3.0声音无法正常工作

时间:2017-01-22 23:56:36

标签: actionscript-3 flash-cs6

因此无法在键盘上发声

我有导入:

import flash.net.URLRequest;
import flash.media.Sound;

我有变量

private var soundDownRequest:URLRequest = new URLRequest ("SoundDown.mp3");
private var downSound:Sound = new Sound (soundDownRequest);

和事件监听器

private function keyDownHandler(evt:KeyboardEvent):void
    {

            if (evt.keyCode == 40)//ascii for down arrow 
            {
                downSound.play();

            }
    }

声音文件夹与.as在同一个文件夹中,它也在fla的库中,但它仍然无法正常工作。知道为什么吗?

谢谢。

更新

我声音有效,但没有使用我上面试图做的外部方法。

必须在内部完成。

所以你需要:

import flash.media.SoundChannel;

- 然后你需要确保你的声音文件在你的文件库中。

一旦进入图书馆

- 右键点击>属性

- 选择“操作脚本”选项卡

- 检查"导出动作脚本"

- 根据声音给类命名

-press ok

添加此变量(您将有所不同):

private var downSound:TheDownSound = new TheDownSound();

downsound是变量的选定名称,而TheDownSound是该类的名称(之前为声音文件制作的名称)

然后将其添加到您希望播放声音的位置:

var myDownSound:SoundChannel = downSound.play();

如果你不能像我一样在外面工作,请这样做。

为了更好的解释,观看这个家伙youtube视频: https://www.youtube.com/watch?v=SZpwppe7yGs

2 个答案:

答案 0 :(得分:1)

如果将.mp3文件放在与输出.swf相同的文件夹中,而不是在类.as源文件附近(因为它的swf文件加载),您的代码工作正常声音,所以路径必须相对于它)

public class ASEntryPoint extends Sprite {

    private var soundDownRequest:URLRequest = new URLRequest ("click.mp3");
    private var downSound:Sound = new Sound (soundDownRequest);

    public function ASEntryPoint() {
        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
    }


    private function keyDownHandler(evt:KeyboardEvent):void{
        if (evt.keyCode == 40) {                
            downSound.play();
        }
    }
}

答案 1 :(得分:1)

您需要加载外部文件,这是异步操作。然后你跟踪加载事件,如果一切正常,你可以播放加载的声音。

import flash.events.SecurityErrorEvent;
import flash.events.IOErrorEvent;
import flash.events.Event;

import flash.net.URLRequest;

import flash.media.Sound;
import flash.media.SoundChannel;

// Keep the sound loader from being garbage collected.
var soundLoader:Sound;

function loadSound(url:String):void
{
    var aRequest:URLRequest = new URLRequest(url);

    soundLoader = new Sound();

    // Handle the normal loading.
    soundLoader.addEventListener(Event.COMPLETE, onLoaded);

    // Handle the error cases.
    soundLoader.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true);
    soundLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError, false, 0, true);

    soundLoader.load(aRequest);
}

var audioChannel:SoundChannel;

function onLoaded(e:Event):void
{
    // Sound is available here for playback.

    audioChannel = soundLoader.play();
}

function onError(e:Event):void
{
    trace(e);
}

你也可以把你的声音当作流媒体音频来处理,但是我在AS2工作了很多年,所以我在这里无法提供帮助。仍然,互联网建议链接:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d22.html