iアプリでブラウザを作る まじめにマウス実装編

まじめにマウス実装編 とかのんびり過ぎるw


まずは、コールバック用のインターフェースを作成する。
iアプリ?はコールバック系はListnerなので、
MouseLisnterとでも名づけましょうかな。


iアプリでブラウザを作る マウス編は、かなりいまいちな事を並べた気がする。
JavaScriptを参考にするのはいいのだけども、
もうちょっと携帯でボタン操作という観点でちゃんと考えないといけなかった。


なので、インターフェースメソッドは、

  • 左上右下ボタンアップ・ダウンメソッド
  • 左クリックボタンアップ・ダウンメソッド
  • 右クリックボタンアップ・ダウンメソッド

の計12メソッドとなりましょう。

実際の名前なんかどうでも良いでしょうけど、

  • onLeftDownPress
  • onLeftUpRelease
  • onUpDownPress
  • onUpUpRelease
  • onRightDownPress
  • onRightUpRelease
  • onDownDownPress
  • onDownUpRelease
  • onLeftClickDownPress
  • onLeftClickUpRelease
  • onRightClickDownPress
  • onRightClickUpRelease

ってところだろうか、かなり受け狙いだろうというメソッド名もあるけどw


あまり、有用かどうかは考えていないが、
どう使われるのか分からないので、これが最小の分割方法だろう。


実際のMouseの方はというと、

Canvasのpaintから呼ばれる、drawMouse
Canvasイベントハンドラから呼ばれる、onMouseEventメソッドを実装して、
Mouseを使用したい側にそれぞれコールしてもらう。


PanelのSoftKeyListnerとかCanvasのcomponetListnerとか、
PanelやCanvasそのものに、add***メソッドがついているのだが、
Mouse用のadd***メソッドなんかあるわけもなく、
コールバック実行のために、MouseからCanvasの各メソッドを
呼び出すために、Canvasクラスを明示的に受け取らないといけない。


なので、コンストラクタのシグネチャにMouseListnerを追加して、
CanvasクラスでMouseのインスタンスを作成する際に
thisで貰うようにしよう。
そうしておいて、あとあとMouseLisnterインターフェースのメソッドを
実行すればコールバック完了というところだ。


あと、実装してて思いついたのは、
setLeftClickKeyとかsetRightClickKeyメソッドを設けておいて、
leftClickKey、rightClickKeyというフィールド変数に対して、
そとから、Display.KEY_SELECTやDisplay.KEY_CLEARとかを
代入すれば動的にマウスクリックを決められると思った。
ナイスアイディア。あんまり動的に設定を変える というアプリを
作ったことないので、実装案が思いついてとてもうれしいw