特定のキャンバス内で、イベントをトリガするキーの組み合わせをユーザーが押すことができるようにしたいと思います(旧メガドライブのチートのようなゲーム)。しかし、どこから始めるべきかわからない。可能であれば、誰でも知っています。もしそうなら、あなたは私にスタートの手がかりを与えることができますか?Flex 3:イベント/機能をトリガするためのキーの組み合わせ
ありがとうございます!
特定のキャンバス内で、イベントをトリガするキーの組み合わせをユーザーが押すことができるようにしたいと思います(旧メガドライブのチートのようなゲーム)。しかし、どこから始めるべきかわからない。可能であれば、誰でも知っています。もしそうなら、あなたは私にスタートの手がかりを与えることができますか?Flex 3:イベント/機能をトリガするためのキーの組み合わせ
ありがとうございます!
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>
キャンバスはキーアップイベントまたはキーダウンイベントをディスパッチしません。リスナーを追加することができます。キーイベントがバブルになると、それだけで彼らを派遣することはありません。残念ながら、textInputなどの入力コンポーネントでは、送出するキープレスイベントにフォーカスが必要です。
キャンバス、グループ、または他のコンテナを使用する代わりに、Spark TextInputをカスタマイズされたスキンで使用し、入力されたテキストを不可視にすることを検討します。
ことの唯一の問題は、私はSparkコンポーネントをサポートしていませんflex3を使用しているということです。とにかくアドバイスをありがとう! –
@Michael Wilson同じことをするためにMX TextInputをスタイルすることができますが、私はそれがそうするのは難しいだろうと認識しています。 – JeffryHouser
優秀、私はここからそれに良いスタブを持つことができるでしょう。リンクもありがとう。 –
これは当てはまります。しかし私が自分の答えで述べたように、何かがまだキーボードイベントを送出する必要があります。私のコンテナはそうしない。 – JeffryHouser
@ www.Flextras.comそれは本当です。私はちょうどKEY_UPまたはKEY_DOWNイベントをディスパッチするために、隠しコンポーネントに焦点を当てるファンではありません。私の意見では、カーソルのコントロールを取るか、ユーザーのコントロールからフォーカスを引いたり、フォーカスをいくつかの隠されたコントロールに頼っているものは良いデザインではありません。 –