4

FireBreath と OpenGL を使用してブラウザー プラグインを作成し、オブジェクト タグを使用してプラグインを埋め込んだ後、プラグインの上にさまざまな HTML 要素を重ねてみました。残念ながら、タグとプラグインのグラフィックは、私が何を試しても、常にページ上の他の HTML 要素の上に表示されていました。

私の知る限り、Flash プラグインは次のように HTML オーバーレイを許可します。

<param name="wmode" value="transparent">

またはタグで HTML オーバーレイを有効にする一般的な方法はありますか? そうでない場合、NPAPI/ActiveX プラグインでオーバーレイを有効にする方法はありますか、または FireBreath は何らかの形でこの機能をサポートしていますか?

プログラミングを始めて以来、StackOverFlow は私の主要なリソースです。

4

2 に答える 2

7

プラグインには2つのタイプがあります。窓付きと窓なし。FireBreathはウィンドウレスプラグインをサポートします(プラグインクラスのisWindowless関数からtrueを返します。ウィンドウレスプラグインを実行する場合は、プラグインの上にHTMLをオーバーレイできます。ウィンドウプラグインを実行する場合は、できません。

ただし、思ったほど簡単ではありません。よく読んでみると、wmode =transparentを使用したフラッシュのパフォーマンスは通常のwmodeを使用した場合ほど良くないことがわかります。その理由は、ウィンドウなしで描画するには、ブラウザから指示された場合にのみ描画する必要があるためです。幸い、ブラウザに再描画するように指示することができます(FireBreathでは、ウィンドウとして取得するPluginWindowlessWinオブジェクトでInvalidateWindowを呼び出します)。

残念ながら、ウィンドウレス描画モードでは、hWNDは取得できません。hDCのみであり、描画イベント(FireBreathのRefreshEvent)の期間中のみ有効です。私が判断できる最善の方法として、描画呼び出し間で変更または削除される可能性のあるopengl描画コンテキストをhDCに作成することはできません。したがって、Windowsでウィンドウレス描画でopenglプラグインが機能するのを確認した唯一の方法は、画面外に描画してから描画することです。 GDIを使用して、ビットをhDCにブリットします。

これは、上記で説明しようとしていることの理解を深めるのに役立つ可能性のある、いずれかのタイプの描画(ウィンドウまたはウィンドウなし)を使用して生のビットマップを描画する例です:https ://gist.github.com/1068352

于 2011-12-04T01:33:31.573 に答える
5

私にとって完璧に機能するこのソリューションを試してください。

プラグインの下にダミーの IFrame を配置し、必要な html をそのすぐ下の div に配置します。

<object id="myPlugin" height="yourRequiredHeight" width="yourRequiredWidth"></object>

<div id="wrapperDiv">
  <iframe class="myClass" > </iframe>
  <div class="myClass" >  My html goes here. It will be placed over the plugin!  </div>

</div>

そしてCSS

。私のクラス

{

position:absolute;
width:250px; // your required height and width for the overlay html
height:250px;
other css as per your style

}
于 2013-05-28T11:29:02.883 に答える