ブラウザで再生するFlashが遅い。

一つ前のFlash日記

id:tsugehara:20060525

症状

今更感のある話らしいが。
http://3ping.org/2004/05/15/1441
というのがあるらしくて、30fpsを設定していたASULAも直撃。ダメじゃんFlash。ブラウザ再生を謳うアニメーションソフトでコレは致命傷だろ。
で、ここの解決策を使って(一部)解決したわけだが。
たった一つ、メールをFlash側で作ってメーラに渡す機能が使えなくなってるのを発見した。正確にはIMEの日本語入力が出来なくなっている。
うえー、これはKAZZ氏が苦労して作ったものだから無効にしたくはないんですけど・・。

調べてはみたが

対策はない模様。
え、つーかposition:absolute;z-index:一番前てな感じのやり方してんじゃないのか?それでなぜIMEを消す必要がある、と思ったのだが、どうやらそう単純な問題ではなく、「Flashをウィンドウではなく動作させる」というのが正確な挙動の模様。spy++で調べて見たが確かにFlashがいない。なんつー無茶をしてんだこいつは。
で、まあ要するにIMM_STARTCOMPOSITIONとか受け取れなくなっちゃってるわけだ。WM_KEYDOWNとかは別のやり方で受け取っているのかよくわからないが、半角入力は出来る。英語圏のソフトだから東アジア的なIMEサポートは今一つ遅れてる、ってなとこですか。
いやいや。
ふざけんな(笑)

対応策

Flashのウィンドウが存在しない以上SendMessageの線がまず消えて、次にJavaScriptからActiveXを制御してキー関連のイベントを全部通知してやればいけるかとも思ったが、それなりに調べて見たつもりだがShockwave Flash Object(CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000)にはキーイベントを通知できるようなインターフェースがないように見える。
http://faces.bascule.co.jp/tutorial/vbfs.php
とかを見るとTSetProperty辺りに一縷の望みを持てそうではあるのだが、IME制御をJavaScriptで完全トレースするのは正直きついだろう。


よって対応策はないと結論付ける。
KAZZ氏に謝まるしかないか。
FPSを落として安全性を手に入れるか、文字入力と安定性を落としてFPSを手に入れるか。
なんでこんなこと考えさせるのやら。
そもそも30fpsなんて、Flashじゃサポートしてない、ってことかな。