■Java ME の Form クラスについての結論
ことさらMIDP2.0についていえば
「結論:Formクラスでまともなアプリは作れない」という結論に達しました。
テストならFormクラスでもいいですが
ユーザに配布するアプリ向きではないようです。
CustomItemを、かなりカスタマイズすれば
ある程度のものはできるかもしれません
しかし
「工数」を考えたときが問題となります。
CustomItemを継承して、いろいろ自作する工数と
Canvasクラスを継承して、いろいろ自作する工数は
あまり変わらない気がします。
だとすれば汎用性の高いCanvasクラスを選択するほうがよいと思います。
あとは操作性の問題があります。
私は「アプリはその操作している時間をユーザから奪っている」と
考えています。
その「ユーザから奪っている時間」に価値があればいいですが
Formクラスに、その操作性を実現するための機能は
備わっていないと感じています。
「開発者の使用する時間」
「エンドユーザの使用する時間」を考えないといけませんね。
テキストボックスのように規定の入力を
させるときは
DisplayクラスのsetCurrent関数で
TextBoxを指定するなどして
対応すると良いかと思います。
[0回]
PR
■Java ME でのFormクラス
Canvasクラスの学習が一段落したので
今度はFormクラスについて学習
だいぶ違う。
・Canvasクラス … 自前で描画、キー入力を制御する。
ゲーム向き。
・Formクラス … Windowsのようにコントロールを配置して制御する。
ツール向き?
Item … 子コントロールの事。
Formの中にItemは置けるが、Canvasの中には置けない。
StringItem … Labelコントロール(VC6のスタティックテキストみたいなの)
ChoiceGroup … ラジオボタンのリスト
CustomItem … 汎用コントロール(継承して自前描画)
DateField … 日付コントロール
Gauge … ゲージ(プログレスバーみたいなの)
ImageItem … ピクチャボックス
Spacer … スペーサー(空白をあけるためのアイテム)
TextField … テキストボックス
・コントロールの種類はとても少ないが
Java ME独特のコントロールもある。
・コントロールはHTMLのように行単位で配置していく。
(Javaユーザなら普通)
座標指定では置けない。
setLayout関数で配置方法を指定するのだが、
MIDP2.0では、必ず LAYOUT_2 を指定する
・パネルやグループボックスといった概念がないので
正直「レイアウトどうせいっちゅうねん」と
ツッコミを入れたくなった。
HTMLのようなテーブルすらない。
・上記にないコントロールを自作したい場合は
「CustomItem」を継承して作成する
(CustomItemのサブクラスを作成する)
・上記のコントロールには背景色の指定もできない
背景色を指定したければ
画像を用意するか
「CustomItem」を継承して自作コントロールにする
・Windowsアプリケーションでいうとこの「フォーカス」は
ここでは「トラバース」という言葉になっている
トラバースは、CustomItemでのみ使用可能。
・Windowsアプリケーション(.NET)でいうとこの
「コントロールのイベント」は
Commandになる。
Commandを作成→Itemに設定
CommandListenerでユーザの入力を検知する
(Javaユーザなら普通)
・テキストボックスの動作に注意。
実機では、テキスト入力画面に切り替わるが
エミュレータではそのまま入力できる
・Formに背景は設定できない?
[0回]
■オチデジdocomo版公開中
ソースとか
http://dencha.ojaru.jp/software/dropdig.htmlアプリ
http://dencha.ojaru.jp/software/dropdig_i/index.htmldocomo版は知人の携帯で確認した。
さすがに人の携帯なので、頼むとして1回か2回が限度だろう。
今回は初iアプリなので多少の不備があるのはしかたがない
小さな不備を挙げるとキリがないので問題点として列挙し
次回作に活かす
[0回]
eclipse 再起動したらswingのプロジェクトで変なエラー発生。
Visual Editorがエラーを出す
「IWAV0168E 式のマーク・ステートメントが不適切にネストされています。 現在のマークの前にポップしようとしたか、または endMark を設定しようとしました。 Mark# 0 の範囲外に移動しようとしました。」
http://www.eclipsewiki.net/eclipse/index.php?%C3%CC%2F473
によれば
>メニューのプロジェクトでクリーンを実行したら自分の環境では復活しました。
という事なのでやってみたらうまくいった。
★原因の予測としては・・・
eclipseの終了時にバックグラウンドで動いてるVisual Editorが強制終了する?
↓
binフォルダ下のファイルが異常なまま終了?
↓
eclipse再起動時にbinフォルダのファイルを参照しながら
visual editor起動??
↓
エラー?
・・・・・とかかなぁ。雰囲気的にはそんな感じだった。
[2回]
■乱数について
乱数について調べていったら・・・ガンマ関数や密度関数にたどりついた。
果たしてコレ要る?
コンピュータにでたらめな数値を生成させる都合上、どうしても擬似乱数になるのは仕方がない。
しかも
どんな乱数も最初の100個なり1000個なりを捨てないとあまりいい値がとれない
と口をそろえたようにどこのサイトも紹介してる。
でも。。。
携帯ゲームに特化させるなら!
最初の10000個がデタラメな値のほうがよくない?
残り999万回同じ値がでてもいいから。
だって携帯の場合、最初の起動時間重要だから。
あとどこのサイト見ても「分布」についてはこだわってるケド
値の「発生順序」について記載がない。。。
1~6まで発生させるとして
1、2、3、4、5、6ってでたら、分布は一様だけど、
ゲームとしては失敗になる (・ω・)
というわけで
今後の方針けってーい。
「最初の10000個の値」
「発生順序」
にこだわった乱数作りだっ。
。。。もう面倒くさいからRamdomクラスそのまま使えばいい気がしてきた。
[0回]