top -> FLASHとSafariの相性(FPS問題)

 FLASHとSafariの相性(FPS問題)

user-pic

 HTMLにFLASHを貼り付ける時、何の指定もなしでデフォルトで貼り付けるとFPSが減少してしまうという現象がありました。
 参照:FPSを正常に
 このページにも纏められているように

 <param name="wmode" value="opaque" />
 objectタグ内ににこの1行を追加すれば、IEでは改善されます。FirefoxやOperaでは改善されず、更にはキー操作も無効になってしまいました。
 というのが今までの見解でした。

 Windows版Safariもリリースされた事ですし、このブラウザではFPSがどうなるか試してみました。
 FPS減少現象を試したゲームは「へぼシュー4」。
 Safariもこの方法でFPSは改善されるようです。SafariとFLASHの相性は良いようですね。
 ついでにOperaでも試してみました。
 …?試したOperaはバージョン9.22です。それが何故かFPSが改善されていました。キー操作も可能。いつの間にか改善されたのでしょうか。
 じゃあ、Firefoxは…。
 あ、あれぇ?Firefoxでも速度改善が見られ、キー操作も可能になってました。ちなみにバージョンは2.0.0.13
 こちらもいつの間にか改善?
 じゃあ、つまりどの主要ブラウザでもこの方法を使えばFPS問題は解決する事に。

 ちなみにこの問題はマシンスペックが低くてもFPSは減少するので、十分なマシンスペックがあってFPSが減少する場合に有効です。

コメント(3)

| コメントする
user-pic

OperaのFPSが改善されたのは9.1あたりからだったと思います。wmodeバグ技と違い普通に仕様っぽいです。
Firefoxはいつの間にキー操作がΣ確認したところobjectではなく相変わらずembedで動いてるようですね。
Safariはembedに記述するとFirefoxと同様に速くなり、キー操作もできました。

ただ一つ気になったのですが、Operaはembedにwmode記述でキー操作無効になる上(へぼしゅー4で確認)、高速化はもともと無理でしたし必要なくなったので書かないほうがいいようです。なのでOperaだけembedの部分をJavascriptで除外するといいのではないでしょうか。

ついでにIEのスクロール問題も解決したソースを書いてみました。どうでしょう?
<html><head>
<style type="text/css"><!--
/*IEスクロール対策*/
*+html #swf, * html #swf {
width:550px;
height:420px;
overflow:auto;
}
--></style>
</head><body>
<div id="swf">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="420" id="shoot5" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="shoot5.swf" /><param name="quality" value="medium" /><param name="scale" value="noscale" /><param name="wmode" value="opaque" /><param name="bgcolor" value="#333333" />
<script type="text/javascript"><!--
document.write('<embed src="shoot5.swf" quality="medium" scale="noscale" bgcolor="#333333" width="550" height="420" name="shoot5" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"');
if(navigator.userAgent.indexOf("Opera") == -1)
document.write('wmode="opaque"');
document.write('/>');
// --></script>
</object>
</div>
</body></html>

javascriptは苦手なのでよくわかりませんが多分これで動くはず…

user-pic

すみません4行目の
*+html #swf, * html #swf
が間違ってたみたいです。こちらで多分OKです
*:first-child+html {} * html #swf

(IE7以下のみに適応できればOK)

user-pic

コメントありがとうございます。
わざわざコードまでっ。
お知恵を拝借してコードを使わせて頂きました。
IEでキー操作によるスクロールが改善されました。
これは難しいですね…。CSSはIE7のみのハックで、IE6はノータッチ。
うちで確認した時はOpera9.22でキー操作も可能だったんですけども。

コメントする

[過去ログ]

カテゴリ

top | info | music | flash | link
copyright©2002-Episodes & Melody all rights reserved.