ページ 11

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

Posted: 2016年6月10日(金) 11:36
by nanashi1
こちらのページ( 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());
		}
	}

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

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

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

Posted: 2016年6月13日(月) 15:08
by nanashi1
GameView.java

[code]

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

[/code]

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

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