何か創りたい。
http://toshirr.blog13.fc2.com/
* Toshi's Recess Room - Toshi Creates. - 2009年11月 の記事 /
<< 2009/10 - 2009/11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 - 2009/12 >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ No. ]
[ 日時 : --/--/-- (--.) --:--:-- ]
[ カテゴリ : スポンサー広告 ]


配置したかも(BlogPet)

OverhandはToshiと参考へ取得するはずだったの。
だけど、Toshiと、配置したかも。

*このエントリは、ブログペットの「Overhand」が書きました。
スポンサーサイト

[ No. 877 ]
[ 日時 : 2009/11/25 (Wed.) 09:08:34 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]


i アプリ開発備忘録 (5)

今回はデータ構造についてです。

・リスト。
i アプリの開発においても、いわゆる「リスト」を利用することができます。
といっても、java.util.List などのクラスは CLDC にないので使えません。ゆえにジェネリクスも無理です。
使えるのは java.util.Vector で、Object 型の参照を保持できる簡易なリスト構造です。
もちろん特定の要素の削除とか特定の位置への挿入も可能です。

要素の列挙には Enumeration を使います。Iterator は無理みたいです。
Enumeration の hasMoreElements / nextElement メソッドを使って回すのが王道みたいです。
もちろん返ってきたオブジェクトは Object なのでキャストが必要になるでしょう。

なお、この Vector に一気にデータを追加したい場合、addElement メソッドを複数回呼び出すことになりますが、
そういうときにこのような方法が使えます。

class Element {
}

testMethod() {
Vector vector = new Vector();
addElement(vector, new Element[] { new Element(), new Element() });
}

void addElement(Vector vector, Element[] element) {
for (int i = 0; i < element.length; i++) {
vector.addElement(element[i]);
}
}

引数に可変長配列を取って、length メンバを使って回します。

果たしてこれが最善の手なのか分かりませんが、これでやっていきます。

[ No. 876 ]
[ 日時 : 2009/11/20 (Fri.) 18:41:43 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]


研究(BlogPet)

Overhandは、Toshiは研究したかもー。
でも、Overhandがロードへ取得しなかったー。
でも、きょうは、制限したよ♪
でも、アルファ値とか配置しなかった?

*このエントリは、ブログペットの「Overhand」が書きました。

[ No. 875 ]
[ 日時 : 2009/11/18 (Wed.) 08:49:20 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]


合格発表Ⅱ

4 月のシスアドに引き続きなので「Ⅱ」です。
先月受験した基本情報技術者試験の合格発表が行われました。
合格でした。やっぱりテンション上がりました。

あーやった甲斐あったわぁー。

IT パスポートは前回よりは難易度やっぱり上がってたようで、合格率はほぼ 50 % でした。

[ No. 874 ]
[ 日時 : 2009/11/16 (Mon.) 21:04:38 ]
[ カテゴリ : 学校ライフ ]
[ コメント : 0 ]
[ トラック バック : 0 ]


プロジェクト(BlogPet)

きょうOverhandは、プロジェクトとか指定された!

*このエントリは、ブログペットの「Overhand」が書きました。

[ No. 873 ]
[ 日時 : 2009/11/11 (Wed.) 08:59:48 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]


i アプリ開発備忘録 (4)

また Canvas とか Graphics ネタです。

・画像の表示。
対応している画像の形式は GIF / JPEG / BMP です。
BMP は DoJa-5.0 以降からしかサポートされておらず、
端末のマイピクチャフォルダにも保存できないなど扱いづらい部分もありますので、
写真は JPEG、それ以外のドット絵とか色数の少ない画像は GIF とするとよいでしょう。
GIF は透過も普通に扱えます。またアニメーション GIF にも対応していますが、
ここで説明している方法とは別な方法で扱います。

ここでは JAR ファイルの中にリソースとして埋め込む方法で説明します。
(こうすると必然的に JAR ファイルのサイズが増えますので、
古いプロファイルではサイズ制限に注意しなければなりません。
そのため画像は初回起動時にダウンロードしてスクラッチパッドに保存するという手法がよく使われます)

まず、プロジェクトのフォルダに res フォルダがありますので、そこに画像ファイルを置きます。
ここに置いたファイルがリソースとして埋め込まれるわけです。
念のため、Eclipse のプロジェクト・エクスプローラ上で res フォルダを右クリックして更新し、
認識されているかどうか確認しておきます。

なお、置いたファイルはビルドした時点で自動的に JAR ファイルに埋め込まれますので、
あとはプログラムから利用するコードを書いてしまえば OK です。

Canvas の paint メソッドで描画するわけですが、
ここでは引数として渡された Graphics オブジェクトの drawImage メソッドを使います。
これは Image オブジェクトと描画する座標を引数に取りますので、Image オブジェクトを得るために、
Canvas のコンストラクタかどこかで MediaManager.getImage メソッドで MediaImage オブジェクトを得て、
そのオブジェクトの use メソッドを呼んだ上で getImage メソッドを呼んで Image オブジェクトを得ます。
メソッド名が同じなので注意しましょう。

言葉で説明しても分かりづらいので、簡単なコードを書いてみます。

import com.nttdocomo.io.*;
import com.nttdocomo.ui.*;

public class TestCanvas extends Canvas {

private MediaImage MyMediaImage;
private Image MyImage;

public TestCanvas() {
MyMediaImage = MediaManager.getImage("resource:///MyImage.gif");
try {
MyMediaImage.use();
} catch (ConnectionException e) {
System.out.println(e);
}
MyImage = MyMediaImage.getImage();
return;
}

public void paint(Graphics g) {
g.drawImage(MyImage, 0, 0);
return;
}

}

注意するポイントがいくつかあります。

MediaManager.getImage メソッドに渡す文字列は、スラッシュを 3 つ付けなければなりません。
先ほど勘違いして 2 つしか付けずにハマりました。
また、MediaManager.use メソッドは throws ConnectionException となっていますので、
必ず try - catch で囲って ConnectionException を捕まえられるようにしておかなければなりません。

[ No. 872 ]
[ 日時 : 2009/11/09 (Mon.) 19:31:27 ]
[ カテゴリ : プログラミング ]
[ コメント : 1 ]
[ トラック バック : 0 ]


i アプリ開発備忘録 (3)

徐々にですが理解してきています。

・波括弧。
{ } ←コレです。
おなじみ、クラスやメソッドの定義、if や switch などの始めと終わりに使うものです。
他の言語では { を新しい行に置いたり置かなかったりしますが、

public class Test {
}

Java では、{ はそういった部分に使うときは新しい行ではなく同じ行に置くのが主流らしいです。
Eclipse にコードを自動生成させると分かります。
せっかくエディタもそうしてくれているので、自分のスタイルで打つよりは素直に従ったほうがいいでしょう。

コレに関しては以下のページが参考になります。
字下げスタイル - Wikipedia
プログラミング作法 - Wikipedia
様々な派があって興味深いですね。

・デバッグ出力。
System.out.println メソッド一発です。
オーバーロードによって、String 型はもちろん各種数値型なども toString して出力してくれるようです。
便利の一言に尽きます。
デバッグのためにこのメソッドを毎回書くのは面倒ですので、どっかに適当に静的メソッドを作ってしまいましょう。
それによって、簡略化のみならず「デバッグのために出力している」ことの明示もできます。

・色の指定。
Graphics による描画では、fillRect メソッドや drawString メソッドを呼ぶ前に
その色を指定するために setColor メソッドを呼ぶ必要があります。
int 型を渡すわけですが、ここでは Graphics.getColorOfRGB メソッドが便利です。
8 ビットの RGB 値の指定から int 型を返してくれますので、これをそのまま

g.setColor(Graphics.getColorOfRGB(255, 0, 255));

のようにできます。またアルファ値を扱いたい場合はオーバーロードで

g.setColor(Graphics.getColorOfRGB(255, 0, 255, 128));

のようにすれば、元の部分の色に半透明合成されます。
この int 型ですが、調べてみれば各バイトが AARRGGBB の順に並んでいるだけでした。
ですので、上の例であれば

g.setColor(0x80FF00FF);

としても同じです。
なので、アルファ値のことを考えずに

g.setColor(0xFF00FF);

としてしまうと、当然ながらアルファ値が 0 なので全く描画されません。

また色名で指定するなら Graphics.getColorOfName メソッドで、

g.setColor(Graphics.getColorOfName(Graphics.RED));

のようにできます。色名は 16 種類です。

[ No. 871 ]
[ 日時 : 2009/11/04 (Wed.) 23:49:39 ]
[ カテゴリ : プログラミング ]
[ コメント : 1 ]
[ トラック バック : 0 ]


全開(BlogPet)

きょう、Toshiは作業したかった。
それできょうToshiと、思考力全開にプログラミングした?

*このエントリは、ブログペットの「Overhand」が書きました。

[ No. 870 ]
[ 日時 : 2009/11/04 (Wed.) 08:45:57 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]


StatusFlag Version 2.4.2.2

立て続けに本日 2 本目となりましたバージョン アップは StatusFlag。
これも不具合修正のみです。
「ウィンドウの幅が 10 の倍数でない場合にスケールが正しく描画されない不具合を修正」です。
実は前に気付いていたんですがようやくここに来て直しました。
どんだけテキトーな処理してたんだよとか思いつつコードを見てみたら、
「頑張ってるみたいだけどこれはなるわけねぇわ」みたいな感じでした。

[ No. 869 ]
[ 日時 : 2009/11/03 (Tue.) 19:34:37 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]


CQuickMark Version 1.0.1.0

果たして私以外にユーザーはいらっしゃるのかという CQuickMark のバージョン アップです。
といっても機能追加的なことはなく、ランタイムに静的にリンクするようにしたとか些細なことです。
そこらへんで思ったことは RSS にて書いています。

[ No. 868 ]
[ 日時 : 2009/11/03 (Tue.) 16:54:33 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]


i アプリ開発備忘録 (2)

C++ を触ってからだと「Java は違うなぁ」と感じるところが出てきますので、そういうのも含めてメモしていきます。
てなわけで Java に関しての備忘録も入ってます。

・メンバ クラス。
「内部クラス」「インナー クラス」とも呼ぶそうです。
クラスの定義の中にまたクラスの定義を含めることができます。
突っ込んだ話ができるほど理解していませんので、気付いたことだけ挙げますと、

メンバ クラスでは、その親になっているクラスのメンバ・メソッドも扱えます。
例として、IApplication を継承しているクラス内に定義したメンバ クラスで terminate メソッドが呼べます。
これは今までにない感覚です。
また i アプリはこの terminate メソッドを呼ばないと終了できません。
System.exit メソッドで終了しようとすると SecurityException がぶん投げられるそうです。注意しましょう。

またこの話から派生して、

・IApplication。
IApplication 継承クラスのメンバ クラスでもなんでもないクラスから終了したい場合は、
IApplication.getCurrentApp().terminate() とします。
getCurrentApp メソッドは、おそらく ADF 設定で設定している AppClass を返してくれるのでしょう。
他にも IApplication からはアプリケーション自身に関する情報が取得できますので、
外部のクラスは参照をメンバとして持っておいても損はないでしょう。

・リスナ。
前回 Panel でキー入力を受け取るにはリスナ登録が必要だということを書きましたが、
要するにこれは SoftKeyListener インターフェイスを実装したクラスを作れという話なので、
Panel を継承したクラス自身が implements SoftKeyListener してしまえば別なクラスを作らずに済みます。
こうして考えると Panel は楽ですね。

[ No. 867 ]
[ 日時 : 2009/11/01 (Sun.) 23:17:20 ]
[ カテゴリ : プログラミング ]
[ コメント : 1 ]
[ トラック バック : 0 ]


プロフィール

  • Author:Toshi
  • 何かを創りたい Toshi の記録


ブログ内の検索


最近の記事


最近のコメント


最近のトラック バック


カレンダー

10 | 2009/11 | 12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -


月別の記事


カテゴリ別の記事


RSS フィード


<< 2009/10 - 2009/11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 - 2009/12 >>
* Toshi's Recess Room - Toshi Creates. - 2009年11月 の記事 /
http://toshirr.blog13.fc2.com/
(C) 2005 - 2009 Toshi, All Rights Reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。