Wiiインターネットチャンネルで、画面の高さからツールバーの有無とワイド画面かどうかを判定する

インターネットチャンネル正式版で何か作るにあたって、画面の幅は800px固定になりましたが、ズームなしと仮定しても、画面の高さは以下のような設定によってマチマチになりました。

というわけで、これらの組み合わせで画面の高さ(JavaScriptからアクセスできるwindow.innerHeightプロパティの値)がどのようになるか調べてみました。


画面ツールバー画面幅(設定値)画面高さ(px)
4:3なし0660
10600
ツールバー境界: 560〜600, 高さ: 100px
あり0560
10500
ワイド境界: 496〜500
16:9なし0496
10452
ツールバー境界: 420〜452, 高さ: 76px
あり0420
10376
画面がワイドかどうか、ツールバーが常に表示かどうか、で、直線的に並んでいます。なので、JavaScriptからwindow.innerHeightの値を見ることで、画面がワイドかどうか、ツールバーが常に表示かどうかを得ることができるはずです。
さらに、画面がワイドの時とそうでないときのツールバーの高さは、それぞれ76pxと100pxであることが読み取れるので、これを利用すれば、ツールバー領域を除く画面の高さを得ることができます。
このツールバー領域を除く画面の高さを利用すれば、安全に表示できる領域が得られるのではないかなあとぼんやり思う今日この頃でした。
以上で、今日も読者層が狭いせまーいメモを終わります。

Wiiのインターネットチャンネル正式版について

も、一応感想書いておこうかと思います。
ブラウジングする分には結構よくなった感じです。でも、拡大縮小をより細やかにできるようになりましたが、中途半端な拡大率の時の文字はやっぱり汚いです。
なお、ゲームなど作ってみたりする環境として、しんどくなった項目は以下:

  1. 通常画面(4:3)とワイド画面(16:9)での縦方向の解像度が同じでなくなった。ツールバーの表示・非表示でも縦方向の解像度が変わる。もちろん、ズームでも変わる。ということで、縦方向の解像度について以前よりもかなり気を遣う必要がある。ちなみに、ワイド画面(16:9)、ツールバー表示、画面幅最大(=10)で、ズームなし時の解像度は800x376pxらしい。むぅん。狭い。
  2. ズームの自由度が広がり、拡大にも何段階もあり、縮小さえもできるようになった、WiiMoteAPI(FlashからWiiリモコンのボタン操作を使えるようにするもの)的なものを正しく動かすのがより難しくなった。(詳細は割愛)
  3. ツールバーの表示方法」を「手動:①」にしていると、JavaScriptで①ボタンの処理をキャンセルするようにしていても、ツールバーの表示・非表示が発動する。①ボタンを使ったゲームを作ろうとするときは、「手動:①」以外を使ってもらうよう案内するか、ツールバーが出てきても問題ないように画面を設計する必要がある。(でもやっぱりウザイけどw)

改善された項目は以下:

  1. Aボタンを押したとき、JavaScriptでもFlashでもmousedownとしてイベントが発生するが、以前は連打すると連打の最初のイベントしか来なかった(mouseupはボタンを離した回数だけくるのに、mousedownは一度しか来ない)のが、押した回数だけmousedown, mouseupともにくるようになった。

ううむ、このあたり説明しづらいわ。

生存してます、泣いたりしながら。

最近といえば、MOTHER3とか再びやってました。2周目。
このゲーム、結構急かされるのと、先が気になるのとで、1周目はサクサク終わらせてしまったんですが、いろんなNPCと話してなかったりで糸井重里の世界を味わい尽くせてない感があったので、忘れた今頃になって再びやっていた次第です。
で、2周目をやった感想。思ったよりネタバレてる気がするので、続きを読むにしておきます。

続きを読む

Scripting Wii (3)

WiiリモコンのボタンをJavaScriptで検知するサンプルも作ってみました。Wiiリモコンのボタンを押すと押したボタンの文字の背景色が変わります。
http://dotinterface.net/wii/wii-mote.html

同じディレクトリにおいてあるwii-mote.jsでいろいろやってますが、汎用的に使うにはちょっとイマイチな出来。

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で随分遊べるんじゃないかという淡い期待。
ちなみに、インターネットチャンネル自体への感想は以下:

  • 1段階しか拡大できないのが不満(テレビの大きさによっては文字が読めないケースがたくさんありそう。もっと拡大したい。)
  • [2]ボタンを押すとWiiでよみやすい様にレンダリングしようとするが、表示される行数が少なすぎてDSブラウザのときより使いにくい感じがした。
  • 十字キーでも画面のスクロールしたい!
  • でも全体的には想像以上によかった(あまり期待しすぎないようにしてたからかもだけど)