問題タブ [nativewindow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actionscript-3 - エア ネイティブ ウィンドウのアクティブ ウィンドウの変更
2 つのウィンドウを持つ Adobe Air アプリ (Flex ではなく AS3) があります。それらから離れて別のデスクトップ プログラムをクリックすると、「非アクティブ化」イベントが発生します (ご想像のとおり)。
Window#1 をクリックすると、"Activate" イベントが発生します (ご想像のとおり)。
しかし、Window#1 から Window#2 に移動すると、何も表示されません。これは、Air アプリケーションがまだアクティブなプログラム、Just a Different Window であるためだと思います。
しかし、あるウィンドウから別のウィンドウにいつ移動するかを知る必要があります。
これまでに思いついた恐ろしい解決策はonEnterFrame
、現在のウィンドウがアクティブなウィンドウであるかどうかを確認することです。しかし、私はそのようなハックよりもはるかに良い方法でそれを行うことをはるかに望んでいます.
私は行ったことがありますがStage
、イベントNativeApplication
とNative Window
それらのどれも私が必要とすることをしません。私が見落としている可能性のある別のイベントを誰か教えてもらえますか?
actionscript-3 - nativeWindowイベントリスナーを無視する
これは何日も私を悩ませてきました、永遠にグーグルした後に答えを得ることができないようです...
問題は簡単です、
私は次のようなイベントリスナーを持つ長方形を持っています:
これは正常に機能します。
この長方形の内側にもボタンがあり、ボタンをクリックすると、長方形をクリックした場合と同じようにウィンドウがドラッグされます。
どうすればこれを防ぐことができますか?イベントを削除しようとしましたが、機能しませんでした。削除するイベント、mouseDownイベントまたはNativeDragイベントすらわかりません... nativeWindowにはstopDrag()関数がありません。簡単な解決策はありますか?
どんな助けでも大歓迎です!
android - ICS上のeglCreateWindowSurface、および2Dから3Dへの切り替え
NDKベースのゲームをAndroidICSで動作させようとしています。HoneycombとGingerbreadでは問題なく機能しました。
ゲームは、いくつかの2Dレンダリング、いくつかの3Dレンダリングを使用し、実行のさまざまな段階で2つを切り替えます。(サードパーティのコードのため、これは交渉できません。)2DレンダリングにはANativeWindow_lock()
/を使用し、3Dレンダリングには// 3を使用しています。ANativeWindow_unlockAndPost()
eglCreateWindowSurface()
gl*()
eglSwapBuffers()
HoneycombとGingerbreadでは、これはすべて正常に機能しました。ICSではeglCreateWindowSurface()
、ログに次のメッセージが表示されて失敗します。
ソースコードを見ると、2Dレンダリング用にネイティブウィンドウが開いているために失敗していることは明らかですeglCreateWindowSurface()
。最初にサーフェスを解放しないと、3Dに変更できません。ただし、ANativeWindow APIには、これを行うための明確な方法がないようです。
他の誰かがこれに遭遇しましたか、そして解決策は何ですか?
更新しました
そこで、代わりにOpenGLプリミティブを使用するように2Dレンダリングコードを書き直しました(バックバッファーをテクスチャにアップロードし、三角形のペア、スワップバッファーを介してテクスチャをレンダリングします)。これはある程度まで機能します。ここで起こっているのは、2Dレンダリングが正常に機能することです。次に、サーフェスを破棄し、3Dレンダリングの準備として新しいサーフェスを作成すると、2回目の呼び出しがeglCreateWindowSurface()
失敗します。今回は、次のようになります。
...そしてそれはのEGLエラーをスローしますAEGL_BAD_NATIVE_WINDOW
。
新しいサーフェスは、古いサーフェスとまったく同じ属性で作成されることに注意してください。私は、への2つの呼び出しの間にeglTerminate()
/を呼び出すことを確認しようとしました。eglInitialize()
eglCreateWindowSurface()
各ANativeWindowを1回だけ使用できるのですか?もしそうなら、それはクロノスのEGL適合性テストに失敗しませんか?では、NativeActivityにウィンドウを再作成させる方法はありますか?
更新更新
最後の問題はeglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)
、コンテキストとサーフェスを破棄する前に電話をかけなかったことが原因であることが判明しました。これにより、スレッドがコンテキストとサーフェスのバインドを解除するまで破棄が遅延していましたが、もちろんそうではなかったため、呼び出しはeglCreateWindowSurface()
合法的に失敗しました(同じネイティブウィンドウに2つのウィンドウサーフェスを設定することはできません)。
これは少しeglTerminate()
直感に反します。これは、呼び出しによってすべてのEGLリソースが破棄されると想定されるためですが、仕様では許可されています。注意してください!
actionscript-3 - AIR-システムクロームを含むようにNativeWindowのサイズを設定します
希望するステージサイズを実現するためにウィンドウサイズを指定できるように、システムクロームのサイズをどのように確認しますか?
メインウィンドウを800x600(ステージ)に設定し、以下のように2つ目のウィンドウを作成すると、サイズが小さくなります。
両方を増やしnewWindow.width = 800;
てnewWindow.height = 600;
クロムを説明すると思いますが、この値をどのように見つけますか?
android - SurfaceView と ANativeWindow
SurfaceView の作成とその後の ANativeWindow の取得に関して質問があります。
- 次のようにするのは適切ですか
mSurfaceView = new SurfaceView(this);
?
onCreate()
onStart()
質問の理由: 私が理解しているように、フォーカスを失うと (他の何かが画面全体を覆い隠す)、SurfaceView が破壊されるので、フォーカスを得る (onStart() が実行される) たびに再作成する必要があります。それとも、SurfaceView は休止状態のままで再利用可能ですか?
次に、上記のサーフェスから (ネイティブ コードで) ネイティブ ウィンドウを作成したいと思います。次のようにするのは適切ですか
ANativeWindow* newwindow = ANativeWindow_fromSurface(jniEnv, joSurface)
?onSurfaceCreated_native(..., jobject surface)
onSurfaceChanged_native(..., jobject surface)
質問の理由: onSurfaceChanged は常に後で呼び出されるように見えるonSurfaceCreated
ため、ネイティブ ウィンドウをいつ作成するかを選択できます。一方で、これを で行うのは理にかなっているように見えますonSurfaceCreated
が、この 2 つjobject surface
は異なるオブジェクトを参照しているように見えます! (onSurfaceCreated でサーフェスへの弱いグローバル参照を作成し、onSurfaceChanged で NULL とサーフェスの両方に対してそれをチェックすることによってチェックされるように、以下のコードを参照してください)
onSurfaceCreated_native(JNIEnv env, ... ,jobject surface) {
myWeakObjectGlobal = env->NewWeakGlobalRef(surface);
}
onSurfaceChanged_native(JNIEnv env, ... ,jobject surface) {
}
したがって、実際に onSurfaceCreated と onSurfaceChanged に送信される 2 つの異なるサーフェス オブジェクトがある場合は、最新のものを使用し、古いサーフェス参照に固執しないようにします。したがって、onSurfaceChanged で ANativeWindow_from_Surface を実行します。
誰かが私のためにこの問題に光を当てることができれば、本当に感謝しています.
flash - メインアプリが閉じられたときに子nativeWindowsを閉じる(OS経由)
私はこれに夢中になっています!Air(2.6)アプリがあり、実行するとポップアップのNativeWindowが開き、アラートを処理します。
これはすべてうまく機能します-私が呼び出す閉じるボタンを介してアプリを閉じるとき:
すべてのプラットフォームでこれに問題はありませんでした。ただし、Windows7では、タスクバーを右クリックして[ウィンドウを閉じる]を選択すると、メインアプリのみが閉じ、子のNativeWindowは閉じません。(これにより、アプリはバックグラウンドで実行され続けます。したがって、ユーザーが再度アクセスしようとしても実行されません)Event.CLOSINGなどのイベントリスナーやその他のさまざまなメソッドを追加しようとしましたが、失敗しました。誰かがwindows7の「ウィンドウを閉じる」オプションからウィンドウを閉じる方法について何かアイデアがあれば。
ご協力いただきありがとうございます
城野
actionscript-3 - AIR NativeWindowBoundsEvent からサイズ変更を開始したコーナーまたはエッジを検出する方法は?
startResize(EdgeOrCornerString) を使用してサイズ変更を手動で開始する場合は、EdgeOrCornerString を設定する必要があります。しかし、(NativeWindowBoundsEvent) サイズ変更ハンドラー内からクリックされたエッジまたはコーナーを検出する方法は? event.type は「サイズ変更」のみを提供し、エッジまたはコーナーは指定されていません。それは可能ですか?
EDIT:NativeWindowのカスタムサイズ変更を行いたいのですが、どのコーナーまたはエッジユーザーがサイズ変更操作を開始したかを知る必要があります。
actionscript-3 - NativeWindowオブジェクトからNativeWindowのラッパークラス(mx:Window)プロパティにアクセスする方法
myCustomWindowという名前のWindowコンポーネントがあるとしましょう。次に、次のコマンドで新しいウィンドウを作成します。
myCustomWindowには、myPropertyという名前のパブリックプロパティがあります。
NativeWindowからmyCustomWindowにアクセスするにはどうすればよいですか?たとえば、このループでそれを行う方法:
c# - ComboBox に NativeWindow を使用すると、Dispose メソッドで例外が発生する
C# Windows.Forms では、コンボ ボックスの貼り付けウィンドウ メッセージをインターセプトしたいと考えています。コンボボックスの WndProc メソッドをオーバーライドしても機能しないため、コンボボックス内のテキスト ボックスの WndProc をオーバーライドする必要があるため、WndProc をオーバーライドする NativeWindow 型のカスタム クラスを作成することにしました。コンボボックス ハンドルが破棄されたら、ハンドルを割り当てて解放します。しかし、コンボボックスの Dispose が呼び出されると、無効なクロススレッド操作が発生し、コンボボックスが作成されたスレッド以外のスレッドからアクセスされたことを示す InvalidOperationException が発生するという問題があります。ここで何がうまくいかないのですか?
以下に、私のクラスがどのように見えるかを示します。
c# - NativeWindowでメッセージを待つ
私がやろうとしているのはWM_TIMER
、プロセス内のウィンドウでメッセージをキャッチして待つことです(ただし、私が制御できないメッセージです)。
AutoResetEvent
メッセージを待つためにを使用しようとしています。
このWaitForMaterialUpdate
メソッドはNativeWindow
をウィンドウに接続し、メッセージを受信するまでブロックします。
これは私が使用しているコードです:
私はあまりデバッグ可能な環境ではありませんがMessageBox
、ウィンドウが実際WM_TIMER
に待機期間中にメッセージを受信していることを確認しましたWaitOne
が、戻る前に常に5000ミリ秒のタイムアウト期間全体を待機しています。
私がどこで間違っているのか考えていますか?