2011-12-04 8 views
3

FireBreathとOpenGLを使ってブラウザプラグインを書き終え、オブジェクトタグを使ってプラグインを埋め込んだ後、プラグインの上にさまざまなHTML要素を重ねようとしました。残念ながら、タグとプラグインのグラフィックは、私が何を試しても、ページ上の他のHTML要素の上にとどまっていました。次のようにNPAPIプラグインの上のHTML

は、私の知る限りでは、Flashプラグインは、HTMLオーバーレイすることができます:

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

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

私がプログラミングを始めてからStackOverFlowは私の主要なリソースです。多くの皆さん、ありがとうございます!

答えて

7

プラグインには2種類あります。ウィンドウなしでウィンドウなし。 FireBreathはウィンドウレスのプラグインをサポートしています(プラグインクラスのisWindowless関数からtrueを返します)。ウィンドウレスプラグインを使用すると、プラグインを介してHTMLをオーバーレイできます。

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

残念ながらウィンドウレス描画モードhWNDを取得しないでください - ちょうどhDCであり、描画イベント(FireBreathのRefreshEvent)の期間だけ有効です。私が判断できる最良の方法では、描画呼び出しの間に変更または離れる可能性のあるhDC上にOpenGL描画コンテキストを作成することはできません.Windows上のウィンドウレス描画でOpenGLプラグインを使用する唯一の方法は、ビットをhDCにblitするにはGDIを使用します。ここで

あなたは、私が上記説明しようとしてきた内容をご理解を固めるに役立つかもしれない(ウィンドウまたはウィンドウレス)を描くのタイプのいずれかを使用して、生のビットマップを描画します例です。https://gist.github.com/1068352

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

.myClass

{ 

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

} 
+0

この方法は私のために動作します。私のプラグインはFBを使用して開発され、ウィンドウが開きました。 –

+1

シンプルで賢い。透明性はありませんが、過去のようなiframeコンテンツに戸惑うことなく、メインページにhtmlを保存するのに効果的です。 – mcanfield

関連する問題