1

AS2を効果的に使用して、フォーカスされているムービークリップに関係なく、.swf全体でスペースバーが押されたことを検出する方法をかなり探しています。AS3またはAS2のいずれかであるが、必要なことを正確に実行していない、主張されているソリューションをいくつか見つけました。私が見つけたものを適応させた後、これまでのところ、単一の検出されたスペースバープレスを生成したものはありません。誰かが代替案を提案できますか?私はそれが本当に明白な何かであるように感じます、そして私はそれを逃しています!

これまでに試したことは次のとおりです(タイムラインの最初で唯一のフレーム内にあります):1)

var stageListener:Object = new Object();
stageListener.onKeyUp = function() {
    if(Key.getAscii() == 32){
        trace("spaceup");
        dostuff;
    }
};
Stage.addListener(stageListener);

2)

stage.onKeyUp = function() {
    if(Key.getAscii() == 32){
        trace("spaceup");
        dostuff;
    }
};

3)

_root.onKeyUp = function() {
    if(Key.getAscii() == 32){
        trace("spaceup");
        dostuff;
    }
};

4)

Main.stage.onKeyUp = function() {
    if(Key.getAscii() == 32){
        trace("spaceup");
        dostuff;
    }
};

5)これらの1つを、swf内のすべてのディスプレイレベルのインタラクティブムービークリップに添付しました。まだ何もありません!

this.onKeyUp = function() {
    if(Key.getAscii() == 32){
        trace("spaceup");
        dostuff;
    }
};

助けてくれてありがとう!

4

1 に答える 1

2

あなたは最初の試みに非常に近かった。オブジェクトは、Keyステージではなく、リスナーをアタッチする場所です。

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
   if(Key.getCode() == 32){
       //do something here for space bar press
   }
};
Key.addListener(keyListener);

AS2はかなりヴィンテージです...AS3の代わりにそれを使用する正当な理由があることを願っています

于 2012-09-14T23:00:54.270 に答える