Flash ActionScript3.0键盘事件侦听器不调用函数,甚至不启动

Flash ActionScript3.0键盘事件侦听器不调用函数,甚至不启动,flash,actionscript-3,function,keyboard-events,keylistener,Flash,Actionscript 3,Function,Keyboard Events,Keylistener,键盘事件侦听器调用“旋转”和“取消旋转”功能,并基于按键输入A和D将执行其中一个功能,旋转图像或将其返回到原始垂直位置。但是,我一直无法使该函数正常工作。当我按键盘上的A或D键时,什么也没发生。我甚至在其中一个函数中添加了跟踪,以查看该函数是否会被实现,但我没有得到任何结果。我把我的脚本放在下面。为什么这些功能不起作用?eventlisteners是否触发或存在冲突?我没有收到任何错误消息 ti.border = true ti.addEventListener(TextEvent.TEXT_I

键盘事件侦听器调用“旋转”和“取消旋转”功能,并基于按键输入A和D将执行其中一个功能,旋转图像或将其返回到原始垂直位置。但是,我一直无法使该函数正常工作。当我按键盘上的A或D键时,什么也没发生。我甚至在其中一个函数中添加了跟踪,以查看该函数是否会被实现,但我没有得到任何结果。我把我的脚本放在下面。为什么这些功能不起作用?eventlisteners是否触发或存在冲突?我没有收到任何错误消息

ti.border = true
ti.addEventListener(TextEvent.TEXT_INPUT, onInput);
    function onInput(event:TextEvent):void {
 if(ti.text.search('a')!=-1) load_image("http://i54.tinypic.com/anom5d.png", "ottefct");
 else if(ti.text.search('b')!=-1) load_image("http://i53.tinypic.com/2dv7dao.png", "rnd");
 else if(ti.text.search('c')!=-1) load_image("http://i51.tinypic.com/m8jp7m.png", "ssd");
    }

var loaded_images:Dictionary = new Dictionary();

function load_image(url:String, id_name:String)
{
    var loader:Loader = new Loader();
    loader.name = id_name;
    var url_req:URLRequest = new URLRequest(url);
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete);
    loader.load(url_req);
}

function onLoadingComplete(evt:Event):void
{
    var img_name:String = evt.currentTarget.loader.name
    var spr_box:Sprite = new Sprite();
    spr_box.addChild(evt.currentTarget.loader);

    spr_box.mouseChildren = false;
    spr_box.doubleClickEnabled = true;

    spr_box.addEventListener(MouseEvent.MOUSE_DOWN, drag);
    spr_box.addEventListener(MouseEvent.MOUSE_UP, drop);
    spr_box.addEventListener(KeyboardEvent.KEY_DOWN, rotate);
    spr_box.addEventListener(KeyboardEvent.KEY_DOWN, unrotate);

    spr_box.width = 124;
    spr_box.height = 180;
    spr_box.x = 430;
    spr_box.y = 425;

    this.addChild(spr_box);
    loaded_images[img_name] = spr_box;
}


function drag(evt:MouseEvent):void
{
    evt.currentTarget.startDrag()
}

function drop(evt:MouseEvent):void
{
    evt.currentTarget.stopDrag()
}

function rotate(evt:KeyboardEvent):void
{
    if (evt.keyCode==68) {
    evt.currentTarget.rotation = 90 }
}

function unrotate(keyEvent:KeyboardEvent):void
{
    if (evt.keyCode==65) {
    evt.currentTarget.rotation = 0; 
    trace("A key pressed")}
}

因为精灵不一定发送键盘事件。将侦听器添加到舞台

stage.addEventListener(KeyboardEvent.KEY_DOWN, rotate);
stage.addEventListener(KeyboardEvent.KEY_DOWN, unrotate);
您需要跟踪选择了哪个spr_框,我猜您只需双击即可。创建一个名为currentSpr_-box的变量,然后在侦听器函数中,将currentSpr_-box设置为currentTarget

spr_box.addEventListener(MoustEvent.DOUBLE_CLICK, onSelect); //add this when creating spr_box in onLoadingComplete

private function onSelect(event:MouseEvent):void{
   currentSpr_box = event.currentTarget as Sprite;
}
在旋转函数中,需要设置currentSpr_box.rotation

更新。。。完整代码示例


因为精灵不一定发送键盘事件。将侦听器添加到舞台

stage.addEventListener(KeyboardEvent.KEY_DOWN, rotate);
stage.addEventListener(KeyboardEvent.KEY_DOWN, unrotate);
您需要跟踪选择了哪个spr_框,我猜您只需双击即可。创建一个名为currentSpr_-box的变量,然后在侦听器函数中,将currentSpr_-box设置为currentTarget

spr_box.addEventListener(MoustEvent.DOUBLE_CLICK, onSelect); //add this when creating spr_box in onLoadingComplete

private function onSelect(event:MouseEvent):void{
   currentSpr_box = event.currentTarget as Sprite;
}
在旋转函数中,需要设置currentSpr_box.rotation

更新。。。完整代码示例


在onLoadingComplete anywhere中,在何处添加此侦听器?当我这样做的时候,我得到了一个错误1013:private属性只能用于类属性定义。好的,去掉private,这只是我的习惯。在加载图像之前添加键盘侦听器。。。甚至当你的应用程序启动时。在OnLoadingComplete中创建spr_框时,您添加了spr_框双击侦听器。我遇到另一个错误,1119:通过静态类型flash的引用访问可能未定义的属性currentSpr_框。事件:KeyboardEvent。函数rotateevt:KeyboardEvent:void{if evt.keyCode==68{evt.currentSpr_box.rotation=90}函数unrotateevt:KeyboardEvent:void{if evt.keyCode==65{evt.currentSpr_box.rotation=0}这就是我应该拥有旋转函数的方式吗?非常感谢。我已经为这个问题挣扎了好几天,现在它可以工作了!在onLoadingComplete anywhere中,在何处添加此侦听器?当我这样做的时候,我得到了一个错误1013:private属性只能用于类属性定义。好的,去掉private,这只是我的习惯。在加载图像之前添加键盘侦听器。。。甚至当你的应用程序启动时。在OnLoadingComplete中创建spr_框时,您添加了spr_框双击侦听器。我遇到另一个错误,1119:通过静态类型flash的引用访问可能未定义的属性currentSpr_框。事件:KeyboardEvent。函数rotateevt:KeyboardEvent:void{if evt.keyCode==68{evt.currentSpr_box.rotation=90}函数unrotateevt:KeyboardEvent:void{if evt.keyCode==65{evt.currentSpr_box.rotation=0}这就是我应该拥有旋转函数的方式吗?非常感谢。我已经为这个问题挣扎了好几天,现在它可以工作了!