javascript - 如何使用键盘事件通过 URLrequest 播放声音?
问题描述
我有基本代码,我使用鼠标事件单击图标以获取具有流式广播开始和停止的 url,但我想让它成为键盘事件。我不知道该怎么做。我正在使用 adobe 动画。我知道如何使用 keyup/keydown 命令使符号消失,但我不知道如何分配键盘事件来代替鼠标事件。最终的结果是一个收音机,我可以在每个电台之间切换,按下键盘上分配的字母。这是我的代码:
button_1.addEventListener(MouseEvent.CLICK, fl_ClickToPlayStopSound_4);
var fl_SC_4:SoundChannel;
var fl_ToPlay_4:Boolean = true;
function fl_ClickToPlayStopSound_4(evt:MouseEvent):void
{
if(fl_ToPlay_4)
{
var s:Sound = new Sound(new URLRequest("http://64.71.79.181:5234/stream"));
fl_SC_4 = s.play();
}
else
{
fl_SC_4.stop();
}
fl_ToPlay_4 = !fl_ToPlay_4;
}
解决方案
您需要在舞台级别收听键盘事件(因为所有这些事件最终都会冒泡到舞台)。查找键盘类以获取关键代码参考。请记住,只有当 Flash 对象(例如在浏览器中)具有输入焦点(例如,您必须先单击它)时,键盘事件才会触发处理程序。
var SU:String;
var SA:Sound;
var SC:SoundChannel;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);
function onKey(e:KeyboardEvent):void
{
// Use trace to get the actual key keycodes or charcodes.
trace(e.keyCode, e.charCode);
// After you have all the keys, you need to
// associate keys with the audio streams.
var audioURL:String;
switch (e.keyCode)
{
case Keyboard.A:
audioURL = "audioa.mp3";
break;
case Keyboard.B:
audioURL = "audiob.mp3";
break;
}
// Clean up previous audio.
if (SC) SC.stop();
if (SA) SA.close();
SA = null;
SC = null;
// Toggle sound logic.
if (SU == audioURL)
{
SU = null;
}
else
{
SU = audioURL;
SA = new Sound(new URLRequest(SU));
SC = SA.play();
}
}
推荐阅读
- java - 在 Java 上连接到 MongoDB 的问题
- php - 如何在 PHPWord 中使边框不“细”以防止 Adobe Reader 中“增强细线”设置的行为
- api-gateway - 最小化/消除 OCI API GW 授权的初始 FN 启动延迟
- c++ - 在多线程中运行的同一对象的多个实例,我如何防止所有线程更改全局变量?
- typescript - 'extends'关键字在联合上的奇怪行为
- google-cloud-platform - Cloud SQL 联合查询 - 私有数据库
- wpf - 如何在编译时自动包含资源文件的副本而不嵌入它们?
- c++ - 使用只有一个参数的构造函数将两个数字相加
- google-cloud-platform - gcloud VM - 无法访问此站点
- django - Django all-auth 仅在验证用户电子邮件地址后才允许用户登录