2011-11-07 10 views
1

AIR(デスクトップ)アプリケーションの起動時に特定のキーが押されているかどうかを知りたい場合は、特定のキー(この場合ALT)が押されているかどうかを確認したい。残念ながら、フレックスは、キーボードを直接ポーリングする方法がないという事実に基づいているようです。誰でもこれを確認できますか?フレックスにキーボードをポーリングする方法はありますか?

キーボードのイベントを受け取り、手動で追跡することは可能です。しかし、起動直前にユーザーがキーを押すと、これは機能しません。したがって、私の特定の問題の解決策ではありません。

+0

Javascriptを使用してこれを検出し、ExternalInterface経由でFlexアプリケーションに渡すことができますか? – sean

+0

flash.ui.Keyboardクラスには、ポーリングできるNum LockとCaps Lockの静的ブール値があります。私はAltのための何も見なかった。 –

+0

@sean、申し訳ありませんが、AIRがデスクトップベースのアプリケーションであることを明確にすると思いました。投稿を編集しました。ありがとうございます。 –

答えて

1

私のアプリでは、リスニングステージMOUSE_MOVE、MOUSE_DOWN、KEY_DOWNで押されたCtrlキーを追跡します。 MouseEventには、ctrlKeyおよびaltKeyプロパティがあります。いくつかの静的変数に状態を格納します。私がこれ以上必要とするとき、私はこれらの出来事から退会します。

+0

良い解決策のように聞こえます。今、ユーザーが最終的にマウスを動かすと想定しても安全ですが、これはユーザーの操作に左右されます。 Flexは、私が想像するマウスイベントを定期的に起動するだけではありません。ユーザーがaltを押したまま、結果が出るのを待っている、何も起こっていない、マウスを動かしてから、それが起こるのを想像することができるからです。 –

+0

ええ、それは99%の場合をカバーしていません。しかしまだ十分です。 –

0

キーアップを聞いている場合は、キーが押されていない場合はこれを聞いてください。実際にはの起動時に、しかしそれらがキーを離したときには、正しくはわかりません。そのイベントからの退会は、「起動後」と判断される時点で行うことができます。

+0

良い答えをありがとう。残念なことに、私の状況では、これは役に立たないでしょう。目的は、ロードするデータベースを選択するためのダイアログボックスをユーザに提示することです。ほとんどの場合、それは動作していないと思われるか、おそらくAltキーを15秒間押し上げるでしょう。 –

+0

選択しないことの欠点は何ですか? 15秒間データベース?マウスを動かす前にAltキーを押し上げる可能性が高いです(マウスを動かしながらAltキーを押し続けているのですか?) –

+0

これはダッシュボードツールなので、アドバンストユーザーに別のダッシュボードをロードすることができます起動。だからどちらの場合でも問題は不思議なユーザーインタラクションモデルだと思います。あなたは、この種のセカンダリユーザーアクションでイベントを撃退してしまい、かなり混乱する可能性があります。あなたはマウスの使用についてのポイントを持っています。これまでのところ、マウスとキーアップの両方をチェックするのが最善の解決策のようです。 –

関連する問題