iアプリでブラウザを作る まじめにマウス実装編
まじめにマウス実装編 とかのんびり過ぎるw
まずは、コールバック用のインターフェースを作成する。
iアプリ?はコールバック系はListnerなので、
MouseLisnterとでも名づけましょうかな。
iアプリでブラウザを作る マウス編は、かなりいまいちな事を並べた気がする。
JavaScriptを参考にするのはいいのだけども、
もうちょっと携帯でボタン操作という観点でちゃんと考えないといけなかった。
なので、インターフェースメソッドは、
- 左上右下ボタンアップ・ダウンメソッド
- 左クリックボタンアップ・ダウンメソッド
- 右クリックボタンアップ・ダウンメソッド
の計12メソッドとなりましょう。
実際の名前なんかどうでも良いでしょうけど、
- onLeft
DownPress - onLeft
UpRelease - onUp
DownPress - onUp
UpRelease - onRight
DownPress - onRight
UpRelease - onDown
DownPress - onDown
UpRelease - onLeftClick
DownPress - onLeftClick
UpRelease - onRightClick
DownPress - onRightClick
UpRelease
ってところだろうか、かなり受け狙いだろうというメソッド名もあるけど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