パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。毎日更新を目指す!

WebView で Javascript

相変わらず PhoneGap で Android アプリにしつつ、(ほとんど)同じ HTML/Javascript で PC や iOS でも動くものを作ろうとしている。が、いろいろ限界が見えてきた。少々画面の書き換えが激しいものなのだが、やはり、Android 端末の WebView 上での描画能力の低さみたいなものが出た。手元に GalaxyS と IS03 があるのだが、割と GalaxyS は滑らかに動くものが、IS03 ではカクカクな感じ。画面の解像度が違うため、自動で拡大表示してくれているのが結構足を引っ張っているっぽい。

ちなみに、ドラッグに合わせて画像を動かす部分なのだが、IS03 でもドラッグ中の描画は結構フレームレートがでる(それでも GalaxyS より低いが)。ところが、ドラッグ後、画像をそのまま慣性で動かし続けるコードを書いたつもりが、ドラッグ終了後、急にフレームレートが半分以下に落ちてカクカクに。GalaxyS と画面解像度が違うため、必要なピクセルフィルレートが違うのもありそうだ。GalaxyS と同じ画像を DotByDot で(小さく)表示すると、IS03 でもそこそこフレームレートが出る。IS03 は 16bit/pixel なので、24bit/pixel の GalaxyS より解像度が高くても描画速度はそこそこかと思ったがそうではないらしい。

それはさておき、気がついたのは GalaxyS でも IS03 でも、よく見ていると、ドラッグ中の画面表示は、少々粗い表示になっている。グラデーションの色数が落ちているように見えたり、アンチエイリアスも効かずに輪郭ががたがたになっていたり。何かしら画面をタッチしている間は表示を手抜きしているらしい。Google Map でも同様の現象は確認できる。これがドラッグ中のフレームレートの高さの理由か。タッチしていなくても、Javascript からこの描画精度をコントロールできると嬉しいのだが。

ちなみに、IS03HTML5Canvas で scale や setTransform で拡大率を指定して drawImage() した時の表示の大きさがおかしい。バグかと思われる。OS が 2.2 にバージョンアップする際には、治ってるといいな。少なくとも PC だとちゃんと動くコードだし、拡大率 1 の時は問題がない。あと、アルファ付き PNG を読み込んだ画像を style.opacity でフェードイン・アウトすると、アルファ 0 の透明部分に色が付いたり。なんか IS03 バギーな感じ。AndroidOS 2.1 が悪いのか、IS03 が悪いのか。