Wiiインターネットチャンネルで、画面の高さからツールバーの有無とワイド画面かどうかを判定する
インターネットチャンネル正式版で何か作るにあたって、画面の幅は800px固定になりましたが、ズームなしと仮定しても、画面の高さは以下のような設定によってマチマチになりました。
- ワイド画面かどうか(Wiiの設定)
- ツールバーを常に表示するようにしているかどうか(インターネットチャンネルの設定)
- 画面幅の調整(0〜10)(インターネットチャンネルの設定)
というわけで、これらの組み合わせで画面の高さ(JavaScriptからアクセスできるwindow.innerHeightプロパティの値)がどのようになるか調べてみました。
画面 | ツールバー | 画面幅(設定値) | 画面高さ(px) |
---|---|---|---|
4:3 | なし | 0 | 660 |
10 | 600 | ||
ツールバー境界: 560〜600, 高さ: 100px | |||
あり | 0 | 560 | |
10 | 500 | ||
ワイド境界: 496〜500 | |||
16:9 | なし | 0 | 496 |
10 | 452 | ||
ツールバー境界: 420〜452, 高さ: 76px | |||
あり | 0 | 420 | |
10 | 376 |
さらに、画面がワイドの時とそうでないときのツールバーの高さは、それぞれ76pxと100pxであることが読み取れるので、これを利用すれば、ツールバー領域を除く画面の高さを得ることができます。
このツールバー領域を除く画面の高さを利用すれば、安全に表示できる領域が得られるのではないかなあとぼんやり思う今日この頃でした。
以上で、今日も読者層が狭いせまーいメモを終わります。
Wiiのインターネットチャンネル正式版について
も、一応感想書いておこうかと思います。
ブラウジングする分には結構よくなった感じです。でも、拡大縮小をより細やかにできるようになりましたが、中途半端な拡大率の時の文字はやっぱり汚いです。
なお、ゲームなど作ってみたりする環境として、しんどくなった項目は以下:
- 通常画面(4:3)とワイド画面(16:9)での縦方向の解像度が同じでなくなった。ツールバーの表示・非表示でも縦方向の解像度が変わる。もちろん、ズームでも変わる。ということで、縦方向の解像度について以前よりもかなり気を遣う必要がある。ちなみに、ワイド画面(16:9)、ツールバー表示、画面幅最大(=10)で、ズームなし時の解像度は800x376pxらしい。むぅん。狭い。
- ズームの自由度が広がり、拡大にも何段階もあり、縮小さえもできるようになった、WiiMoteAPI(FlashからWiiリモコンのボタン操作を使えるようにするもの)的なものを正しく動かすのがより難しくなった。(詳細は割愛)
- 「ツールバーの表示方法」を「手動:①」にしていると、JavaScriptで①ボタンの処理をキャンセルするようにしていても、ツールバーの表示・非表示が発動する。①ボタンを使ったゲームを作ろうとするときは、「手動:①」以外を使ってもらうよう案内するか、ツールバーが出てきても問題ないように画面を設計する必要がある。(でもやっぱりウザイけどw)
改善された項目は以下:
- Aボタンを押したとき、JavaScriptでもFlashでもmousedownとしてイベントが発生するが、以前は連打すると連打の最初のイベントしか来なかった(mouseupはボタンを離した回数だけくるのに、mousedownは一度しか来ない)のが、押した回数だけmousedown, mouseupともにくるようになった。
ううむ、このあたり説明しづらいわ。
Scripting Wii (3)
WiiリモコンのボタンをJavaScriptで検知するサンプルも作ってみました。Wiiリモコンのボタンを押すと押したボタンの文字の背景色が変わります。
http://dotinterface.net/wii/wii-mote.html
Scripting Wii (2)
とりあえず、canvas要素で時計を作ってみた。
http://dotinterface.net/wii/clock.html
しかし、Wii実機で動かすと時針の位置がおかしい。調べてみると、new Date().getHours()が16時なのに7を返すではないか。これは…UTC…?
あと、ふと気になって調べたこと。クラコンやヌンチャクは何もキーコードくれませんでした。ケチ。
Scripting Wii
2chの某スレでキーコードテストを踏んだことで、HOMEボタン以外のすべてのキーをJavaScriptでとれることはわかりました。
ちなみに、B+−12などのボタンは押すとデフォルトの処理を行う(たとえばBを押すとスクロールとか)ので、それをキャンセルしたい場合はEventオブジェクト(window.eventでとれる)のpreventDefaultメソッドを呼び出すといいようです。
また、Aボタンはマウス左ボタンと対応しているので、マウスイベントをとればAボタンの状態がとれます。
で、ミニゲームとか作るとしたらあとは音が鳴らせたいと思って色々調べてるところですが、音を鳴らす手段はもしかしてFlashしかない…?という感じです。むむぅ。
Opera 9 for Devicesの仕様
http://jp.opera.com/products/devices/technology/sdk/specs/
canvas要素 @ Wiiインターネットチャンネル
Wiiにインターネットチャンネルお試し版が来ました!
というわけで、恐らく搭載されているのはOpera 9 for Devicesのはず。
インターネットチャンネルでは、AJAXなものも結構動く(とりあえずGmailは確認しました。)し、上記リンク先では、canvas要素にも対応みたいなことが書いてあるので、canvas要素とJavaScriptで随分遊べるんじゃないかという淡い期待。
ちなみに、インターネットチャンネル自体への感想は以下: