AS3:键盘输入无法在Internet Explorer上运行

时间:2013-01-07 12:12:09

标签: actionscript-3 internet-explorer keyboard-events

我有一部导入外部SWF的flash电影。 我在外部SWF(WASD移动星形)和容器内部有一些交互(O改变圆形颜色)。 一切都适用于Chrome和Firefox,但不适用于Internet Explorer,这让我很头疼。 这是测试:http://clients.adrime.com/files/campaigns2/9785452187/38177/default.htm 这里是CONTAINER交互的代码:

stage.focus = stage;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onoff);
function onoff(e:KeyboardEvent):void
{
    if(e.keyCode == 79) //O
        bulb.gotoAndStop(bulb.currentFrame == 1 ? 2 : 1);
}

这是EXTERNAL SWF中的一个:

this.addEventListener(Event.ADDED_TO_STAGE, added);

function added(e:Event):void
{
    stage.addEventListener(KeyboardEvent.KEY_DOWN, tastiera);
}

function tastiera(e:KeyboardEvent):void
{
    if(e.keyCode == Keyboard.A)
        st.x -= 5;
    else if(e.keyCode == Keyboard.D)
        st.x += 5;
    else if(e.keyCode == Keyboard.W)
        st.y -= 5;
    else if(e.keyCode == Keyboard.S)
        st.y += 5;
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

操作系统和Web浏览器将在Adobe Flash Player或AIR之前处理键盘事件。

出于安全考虑, FLASH永远不会自动对焦 - 否则窃取键盘输入会非常容易。

  

嵌入在HTML网页中的Flash电影不会收到关键事件   当页面首次加载到Web浏览器中时。

有一个official Javascript solution。您还可以使用SWFObject嵌入Flash内容。