RGBの携帯Java入門

 
共通事項  ※「アプリ作成の流れ」で作成した「MainCanvas.java」のメソッドの説明です。
1.描画の開始終了
2.文字の描画
3.長方形の描画
4.描画色の設定
5.画像の描画
6.キーの処理
7.画面遷移の処理

■キーイベントの処理方法
押されたキーを調査するメソッドは2種類あります。
1つは、keyPressingメソッドです。
例えば次のように指定した場合、

if( keyPressing(KEY_RIGHT) ) {

}

「右キー」が1回だけ押された状態のときにtrueとなり、if文内の処理に移ります。

もう1つは、keyRepeatingメソッドです。
例えば次のように指定した場合、

if( keyRepeating(KEY_RIGHT) ) {

}

「右キー」が押しっぱなしの状態のときにtrueとなり、if文内の処理に移ります。

■キーの種類
携帯Javaアプリで取り扱えるキーは「方向キー」、「決定キー」、「数字キー」、「ソフトキー」等があります。
ここでは、よく利用する「方向キー」、「決定キー」の利用方法に絞って説明します。

キーの名称 画像 定数
決定キー KEY_SELECT
上キー KEY_UP
下キー KEY_DOWN
左キー KEY_LEFT
右キー KEY_RIGHT

■サンプルソース
「アプリ作成の流れ」で作成した「MainCanvas.java」(ソース雛形は1.0)のsceneInitメソッドを削除し、以下の内容に置き換えます。


	/** 決定キーが押された回数です。*/
	int c;
	
	/** X座標です。*/
	int x;
	
	/** Y座標です。*/
	int y;
	
	/**
	* 「初期化」シーンを制御します。
	*/
	public void sceneInit() {
		if(firstScene()) {
			c = 0;
			x = 10;
			y = 10;
		}
		
		draw(true);
		
		setColor(0, 0, 255);
		fillRect(0, 0, AREA_WIDTH, AREA_HEIGHT);
		
		if(keyPressing(KEY_SELECT)) {
			c ++;
		}
		else if(keyPressing(KEY_UP)) {
			y -= 10;
		}
		else if(keyPressing(KEY_DOWN)) {
			y += 10;
		}
		else if(keyRepeating(KEY_LEFT)) {
			x -= 10;
		}
		else if(keyRepeating(KEY_RIGHT)) {
			x += 10;
		}
		
		setColor(255, 0, 0);
		drawString("" + c, x, y);
		
		draw(false);
	}

			

置き換えたらビルドし、起動します。
右キーを押しっぱなしにすると、文字が右に移動し続けます。
左キーを押しっぱなしにすると、文字が左に移動し続けます。
上キーを押すと、文字が上に1回だけ移動します。
下キーを押すと、文字が下に1回だけ移動します。
決定キーを押すと、表示されている文字の数値が1つ増えます。

(参考例:iアプリの例)




※ソース雛形1.1以降の場合
ソース雛形1.1以降の場合は、「制御処理部(controlメソッド)」、「キー処理部(keyメソッド)」、「描画処理部(paintメソッド)」に分割されています。

キーの処理は、キー処理部(keyメソッド)に書きます。

keyメソッドにはboolean型の戻り値があります。
keyメソッド内部で、キー処理後にすぐに再描画をしたいときはtrueを返します。
これにより、キー処理の結果がすぐに画面に表示されます。

ただし、trueによる即再描画は負荷がかかりますので、連射系の処理には向いていません。
連射されると想定される場合はfalseを返してください。
基本的にはchangeSceneメソッドの後はfalseで構いません(trueでも問題はありませんが)。

■サンプルソース(具体例はサンプルゲームのRENUMVERを参考のこと)
	/**
	* タイトルシーンのキー処理を行います。
	*
	* @return キーイベントが処理された場合にtrueを返します。
	*/
	public boolean keyTitle() {
		if(keyPressing(KEY_SELECT)) {
			changeScene(SC_STORY);
			return false;
		}
		else if(keyPressing(KEY_UP)) {
			// 上キーが押されたらメニューカーソルを上に移動する
			cursor --;
			
			if(cursor < 0) {
				cursor = 2;
			}
			
			return true;
		}
		else if(keyPressing(KEY_DOWN)) {
			// 下キーが押されたらメニューカーソルを下に移動する
			cursor ++;
			
			if(cursor > 2) {
				cursor = 0;
			}
			
			return true;
		}
		
		return false;
	}

 
RGBの携帯Java入門

Copyright (c) RGB