在此应用程序中,我有16个不同的按钮,每个按钮播放不同种类的声音。目前,我只能使用鼠标单击来开始播放声音,然后再次单击以停止播放声音,但是现在我希望添加快捷键来访问这些音轨按钮,例如对音轨1按下“q”,对音轨2按下“w”。提示或提示,例如我应该怎么做才能达到目的?非常感谢。
private var _ambientTracks:Array = [ambient1, ambient2, ambient3, ambient4];
private var _effectTracks:Array = [effect1, effect2, effect3, effect4];
private var _melodyTracks:Array = [melody1, melody2, melody3, melody4];
private var _beatTracks:Array = [beat1, beat2, beat3, beat4];
//handle click on track invoke start / stop functions
private function onTrackClicked(event:MouseEvent):void {
var track:Sprite = event.currentTarget as Sprite;
var trackName:String = track.name;
if (trackName in _playingTracks) {
stopTrack(track);
delete _playingTracks[trackName];
} else {
startTrack(track);
_playingTracks[trackName] = trackName;
}
}
//starts track animation and dispatch event for TrackMixer
private function startTrack(track:Sprite):void {
Actuate.tween(track, 0.6, {alpha: 0.3}).reflect().repeat();
dispatchEvent(new ObjectEvent(START_TRACK, track.name, true));
}
//stop track animation and dispatch event for TrackMixer
private function stopTrack(track:Sprite):void {
Actuate.stop(track, "alpha");
track.alpha = 1;
dispatchEvent(new ObjectEvent(STOP_TRACK, track.name, true));
}
最佳答案
这是一个基本概念,与您要达到的目的类似,如果您有很多按键命令,建议使用开关盒,则需要聆听按键并使用特定的按键代码处理要按下的按键。
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0x000000);
mc.graphics.drawCircle(30,30,30);
mc.graphics.endFill();
stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
function keyUp(e:KeyboardEvent):void{
if(e.keyCode == 81){//q
addChild(mc);
}
if(e.keyCode == 87){//w
if(mc.stage){
removeChild(mc);
}
}
}
关于actionscript-3 - 如何在AS3中添加键盘交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507479/