AS3で記述されたAIRのアプリケーションを構築していますが、右クリックメニューの上にマウスを移動すると(ほとんどの場合)、コンテキストメニューとネイティブメニューの両方を試しました。現在、必要に応じてネイティブメニューを使用しています。サブメニュー)、ビデオオブジェクトの速度が大幅に低下し(ローカルWebカメラの画像が表示されます)、FPSカウンターも低下します(明らかに)。これは、デバッグ中と、インストール後のアプリケーションの実行中の両方で発生します。それは本当の取引ブレーカーです、私は本当にいくつかの助けをいただければ幸いです。私はインターネット上でこれに似たものをまだ見つけていません、それは本当に奇妙です。
1 に答える
0
これは、ContextMenuをWindows GDI(ソフトウェアレベル)で描画する必要があり、FlashビデオオブジェクトがGPUでレンダリングされているためです(もちろん、Adobeで修正できますが、現時点では修正されていません)。
唯一の解決策は、既存のすべてのContextMenuオブジェクトでContextMenuEvent.MENU_SELECTをキャッチすることにより、ContextMenuが表示される前にビデオを一時停止(またはステージから削除)することです(存在しない場合は、に直接追加されたInteractiveObjectを継承するオブジェクトごとに1つ追加しますstage
)。
ビデオの再生を再開する場合は、いくつかの制限を受け入れる必要があります。ContextMenuを閉じるときにイベントが発生しないため、次のことに依存する必要があります。
- ContextMenuEvent.MENU_SELECT_ITEM(ContextMenuItemによって起動され、これを作成してContextMenu.customItems配列に追加します)
- FullScreenEvent(FullScreenに出入りすると、ContextMenuが閉じられたことが保証されます)
- Event.DEACTIVATE(Flashは、入力フォーカスを失った場合、コンテキストメニューをすべて閉じます)
- MouseEvent.CLICK-これは状況によってはお勧めできません(アプリで理解できます)(これをすべての上に半透明の暗いスプライトと組み合わせて、「キャンセル」のためのマウスクリックの必要性を示すことができますアクション、およびクリックの伝播をキャッチして停止する);
状況によっては、ContextMenuの終了を検出できない場合があります。
- ユーザーが組み込みのメニュー項目を選択している場合(Adobe Airの場合は除く)
- F10やEscapeなどのキーを押す
- その他の状況
于 2012-05-02T17:02:46.883 に答える