Headline About TechLog Download Java VBA Link

July 18, 2007.

文字入力機能の作成


引き続きS!アプリの開発を行っています。結局Canvasで作ったアプリにFormを混ぜるのが気に食わなかったため、文字入力機能を自作することにしました。入力方法としては携帯方式を採用しました。例えば2を連続で押すとA→B→Cとなるあれです。アルファベット限定ですけど。かなり面倒なイメージでしたが作ってみたら直ぐでした。追加で半角カタカナぐらいはやっても良いかも。まぁ、面倒なのでその辺の機能は後回しです。

同じキーの違う文字入力は携帯と同じく右押下です。文字削除が左押下になってたり、キャレットが無しだったりするのは全て手抜きが理由です(笑)。

 

MIDP開発で個人的に面倒なのがStringのメソッドが少ないことと、Hashtable, Vectorなどの不在です。で、自作クラスの配列を作って処理したりするわけですが、データ配列をクラス配列にすると要素数分newする羽目になる。通常の開発なら当然クラス化するところでもあえて配列にして速度や容量を重視したりと、オブジェクト指向に逆行することも多々。

メモリ管理が安全だからjavaなだけで、突き詰めたMIDPプログラムは自作クラス殆ど無し、コンポーネント化も最小限になってしまうのです。まぁ、今作ってるのは10KB程度の作品で、バリバリ読みやすくしても20KB以下になりそうなので、もっと楽しようかな?メガアプリの時代だし。そもそもQVGAで作ってるので極端に古い端末では動きません。

 

そうそう、色の指定を行なうメソッドには2種類あって引数が3つの方はRGBで指定するわけです。じゃぁ1つの方は色の名前だろうと思ったら、どこにも定数宣言が見当たらない。何でだろうと思ったら、ビット演算してまとめるのね。例えば黄色を書きたい場合は以下の2パターンが可能なのです。

 

//パターン1

g.setColor(255, 255, 0);

 

//パターン2

static final int YELLOW = (255<<16|255<<8| 0<<0);

g.setColor(YELLOW);

 

色指定を定数化して使いまわすにはパターン2が必須なので、慌てて書き直してまわりました。javaのintは4byteだからRGB各256色、つまり1要素あたり1byteで済む以上、bit演算して論理ORしとけばintが1個で済むというわけ。javaやってるとbit演算なんか滅多にやらないので思いつかなかった。あとは文字などを描画する場所なんかも、Graphics.TOP|Graphics.LEFTのようにORを取ったりします。いやはや、逆に新鮮ですね。

 

さて、作成の首尾のほどはというと、主機能は7割完成。つまり面倒な機能ばかりが3割も残っている。取り合えず10割になったら、アプリ★ゲットさんに一般公開申請して、うちのページからもDLページへリンクします。ダウンロードしてくれる人がいるのかなぁというマイナー路線のツールですけど。基本的にニッチ物が好きなので(笑)。良かったら試してみてくださいませ。


名前: 意見: パス:

※パスにはこの日記のタイトルをコピペして下さい。


July, 2007
SUN MON TUS WED TUR FRI SAT
1234567
891011121314
15161718192021
22232425262728
293031