2011-06-01 7 views
1

特定のキャンバス内で、イベントをトリガするキーの組み合わせをユーザーが押すことができるようにしたいと思います(旧メガドライブのチートのようなゲーム)。しかし、どこから始めるべきかわからない。可能であれば、誰でも知っています。もしそうなら、あなたは私にスタートの手がかりを与えることができますか?Flex 3:イベント/機能をトリガするためのキーの組み合わせ

ありがとうございます!

答えて

2

KeyboardEvent.KEY_DOWNイベントのトップレベルアプリケーションにeventListenerを追加し、そこでキーの組み合わせを確認してください。 this articleから:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute" creationComplete="init()"> 
<mx:Script> 
<![CDATA[ 
    private function init():void{ 
    this.addEventListener(MouseEvent.CLICK, clickHandler); 
    this.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed); 
    } 
    private function clickHandler(event:MouseEvent):void { 
     stage.focus = this; 
    } 
    private function keyPressed(evt:KeyboardEvent):void{ 
     if(evt.ctrlKey && evt.keyCode == 65) 
      trace("CTRL A is pressed"); 
     if(evt.ctrlKey && evt.keyCode == 66) 
      trace("CTRL B is pressed"); 
    } 
]]> 
</mx:Script> 
</mx:Application> 
+0

優秀、私はここからそれに良いスタブを持つことができるでしょう。リンクもありがとう。 –

+0

これは当てはまります。しかし私が自分の答えで述べたように、何かがまだキーボードイベントを送出する必要があります。私のコンテナはそうしない。 – JeffryHouser

+0

@ www.Flextras.comそれは本当です。私はちょうどKEY_UPまたはKEY_DOWNイベントをディスパッチするために、隠しコンポーネントに焦点を当てるファンではありません。私の意見では、カーソルのコントロールを取るか、ユーザーのコントロールからフォーカスを引いたり、フォーカスをいくつかの隠されたコントロールに頼っているものは良いデザインではありません。 –

2

キャンバスはキーアップイベントまたはキーダウンイベントをディスパッチしません。リスナーを追加することができます。キーイベントがバブルになると、それだけで彼らを派遣することはありません。残念ながら、textInputなどの入力コンポーネントでは、送出するキープレスイベントにフォーカスが必要です。

キャンバス、グループ、または他のコンテナを使用する代わりに、Spark TextInputをカスタマイズされたスキンで使用し、入力されたテキストを不可視にすることを検討します。

+0

ことの唯一の問題は、私はSparkコンポーネントをサポートしていませんflex3を使用しているということです。とにかくアドバイスをありがとう! –

+0

@Michael Wilson同じことをするためにMX TextInputをスタイルすることができますが、私はそれがそうするのは難しいだろうと認識しています。 – JeffryHouser

関連する問題