ActionScript 3.0 声音不工作
ActionScript 3.0 sound not working
因此在按下键盘时无法发出声音
我有进口货:
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();
}
}
sound文件夹和.as在同一个文件夹,也在fla的库里,但是还是不行。知道为什么吗?
谢谢。
更新:
我的声音可以正常工作,但没有使用我在上面尝试执行的外部方法。
必须在内部完成。
所以你需要:
import flash.media.SoundChannel;
-那么您需要确保您的声音文件在您的 fla 库中。
一旦它在图书馆
-右键单击>属性
-Select 动作脚本选项卡
-检查"export for action script"
-根据声音给class起个名字
-按确定
添加这个变量(你的会有所不同):
private var downSound:TheDownSound = new TheDownSound();
downsound 是选择的变量名称,TheDownSound 是 class(之前为声音文件制作的那个)
然后将其添加到您想要播放声音的位置:
var myDownSound:SoundChannel = downSound.play();
如果你不能像我一样让它在外部工作,那就这样做吧。
要获得更好的解释,请观看这个家伙的 youtube 视频:
https://www.youtube.com/watch?v=SZpwppe7yGs
如果您将 .mp3
文件与输出 .swf
放在同一文件夹中,而不是靠近 class .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();
}
}
}
您需要加载外部文件,这是异步操作。然后你跟踪加载事件,如果一切正常,你就可以播放你加载的声音。
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 中使用过,所以我在这里无能为力。不过,互联网建议 link:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d22.html
因此在按下键盘时无法发出声音
我有进口货:
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();
}
}
sound文件夹和.as在同一个文件夹,也在fla的库里,但是还是不行。知道为什么吗?
谢谢。
更新:
我的声音可以正常工作,但没有使用我在上面尝试执行的外部方法。
必须在内部完成。
所以你需要:
import flash.media.SoundChannel;
-那么您需要确保您的声音文件在您的 fla 库中。
一旦它在图书馆
-右键单击>属性
-Select 动作脚本选项卡
-检查"export for action script"
-根据声音给class起个名字
-按确定
添加这个变量(你的会有所不同):
private var downSound:TheDownSound = new TheDownSound();
downsound 是选择的变量名称,TheDownSound 是 class(之前为声音文件制作的那个)
然后将其添加到您想要播放声音的位置:
var myDownSound:SoundChannel = downSound.play();
如果你不能像我一样让它在外部工作,那就这样做吧。
要获得更好的解释,请观看这个家伙的 youtube 视频: https://www.youtube.com/watch?v=SZpwppe7yGs
如果您将 .mp3
文件与输出 .swf
放在同一文件夹中,而不是靠近 class .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();
}
}
}
您需要加载外部文件,这是异步操作。然后你跟踪加载事件,如果一切正常,你就可以播放你加载的声音。
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 中使用过,所以我在这里无能为力。不过,互联网建议 link:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d22.html