【android】イライラ棒でonTouchEventを使いたい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nanashi1

【android】イライラ棒でonTouchEventを使いたい。

#1

投稿記事 by nanashi1 » 9年前

こちらのページ( dixq.net/Android/ )で紹介されているAndroidアプリケーションであるイライラ棒ですが、加速度センサーを用いてプレイヤーの移動を行っていますよね。それを加速度センサーではなく、タップで移動させたいのです。

試行錯誤の末、以下の様に書いてみたのですが上手くいきませんでした。 ヒントでも良いので教えてください。

Task.java

コード:

public abstract class Task extends Activity{
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		return true;
	}
}
Player.java

コード:

public class Player extends Task {
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		return true;
	}
}
GameMgr.java

コード:

public class GameManager{
	LinkedList<Task> _taskList = new LinkedList<Task>();
	GameManager(Context context){
		_taskList.add( new Player(context) );
		_taskList.add( new Fps() );
	}
	public boolean onTouchEvent(MotionEvent event) {
		for (int i = 0; i < _taskList.size(); i++) {
			if (_taskList.get(i).onTouchEvent(event) == false) {
				_taskList.remove(i);
				i--;
			}
		}
		return true;
	}
}
GameSurfaceView.java

コード:

class GameView extends SurfaceView implements SurfaceHolder.Callback, Runnable {
	GameManager _gameMgr = new GameManager(getContext());
        public MotionEvent event;
	Thread _thread;
	public GameView(Context context) {
		super(context);
		getHolder().addCallback(this);
	}
        @Override
	public void run() {
		while (_thread!=null) {
			_gameMgr.onUpdate();
                        _gameMgr.onTouchEvent(event);
			Draw(getHolder());
		}
	}

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 【android】イライラ棒でonTouchEventを使いたい。

#2

投稿記事 by Dixq (管理人) » 9年前

全てのTaskはActivityで、タスクリストの中身は全部Activityなんですか??
登場人物の構成がとてもおかしいです・・。
Activityはいわゆる画面です。
画面がこんなに沢山あると困ります。
タッチイベントはSurfaceViewでonTouchEventを@Overrideしてそこから必要な人に情報を与えてあげればいいと思います。

nanashi1

Re: 【android】イライラ棒でonTouchEventを使いたい。

#3

投稿記事 by nanashi1 » 9年前

GameView.java

[code]

@Override
public Boolean onTouchEvent(MotionEvent event) {
return true;
}

[/code]

として、GameViewクラスにViewクラスのonTouchEventメソッドをオーバーライドする事には成功しました。

ここから、Playerクラス等の外部クラスで使用したいのですが、Taskクラスを継承しているので、継承は出来ないですよね。そういった場合に、外部クラスのメソッドは使用出来るのでしょうか?
Java、というより、オブジェクト指向言語における初歩的な質問だと思いますが、お教え願えますか?

閉鎖

“C言語何でも質問掲示板” へ戻る