Headline About TechLog Download Java VBA Link

July 26, 2007.

雨を降らせる


さて、この所ずっとMexaを使ってアニメーションを作るのにハマっています。昨日は画像無しで雨を降らせてみました。まずは空を描画します。白黒でやっていますので、取り合えず夜っぽい感じで以下のようにグラデーション描画を実装しました。(以下、単純化のため、定数化すべきところなんかも即値で書いてます)

 

for (int i = 0; i < 180; i++) {

  g.setColor(i, i, i);

  g.fillRect(0, i, 240, 1);

}

 

で、その上に背景画像やキャラクタを描画した後に、雨を描画します。雨の描画にはランダム関数を使いますが、MIDPのRandomクラスにはnextInt(int Max)のように範囲指定つきで値を取得するメソッドが有りません。なのでまず、以下のようにnextIntを実装しました。

 

private static Random random = new Random(System.currentTimeMillis());

public static int nextInt(int max) {

  return Math.abs(random.nextInt()) % max;

}

 

で、実際の雨の描画はこんな感じです。

 

public void paint(Graphics g) {

  g.setColor(255, 255, 255);

  for (int i = 0; i == 100; i++) {

    int x = MyRandom.nextInt(240);

    int y = MyRandom.nextInt(360);

    g.drawLine(x, y, x - 2, y + 6);

  }

}

 

あとはthreadがフレームを進めるごとにrepaint()が呼ばれると、雨の描画がさし換わるわけです。意外と自然な感じで描画されて楽しいので、一度トライしてみてください。わざわざMexaでやら無くてもJavaのCanvasやFrame上への描画で十分楽しめます。baristaは携帯電話の実機で眺めてニヤニヤしていますけど(気持ち悪!)。


名前: 意見: パス:

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


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