[Android]座標取得

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
太陽
記事: 4
登録日時: 9年前
住所: 地球

[Android]座標取得

#1

投稿記事 by 太陽 » 9年前

どうも、太陽と申します。

現在、Androidの館のイライラ棒アプリの改良を行っております。
その箇所において、Web上では加速度センサーを使っておりますが、
自分はタッチによる移動で操作をしたいと思います。

しかし、座標が取得されず円が移動出来ません。

どうか、教えて下さい。

Player.java

コード:

public class Player extends Task{

    private final static float SIZE = 20;           //自機の大きさ
    private Circle _cir = null;             //自機の円
    private Paint _paint = new Paint();     //描画設定
    private TouchEvent touchEvent = new TouchEvent(); //インスタンス

    public Player(){
        _cir = new Circle( 240, 0, SIZE );//(240,0)の位置にSIZEの大きさの円を作る
        _paint.setColor(Color.BLUE);      //色を青に設定
        _paint.setAntiAlias(true);        //エイリアスをオン
    }

    @Override
    public boolean onUpdate(){
        System.out.println("x"+_cir._x+"y"+_cir._y); //座標取得の確認
        _cir._x = touchEvent.getFX();
        _cir._y = touchEvent.getFY();
        return true;
    }

    @Override
    public void onDraw( Canvas c ){
        c.drawCircle(_cir._x, _cir._y, _cir._r, _paint);
    }
}

TouchEvent.java

コード:

public class TouchEvent extends Activity {

    private float _x,_y;

    public TouchEvent(){
        _x = _y = 0;
    }

    public float getFX(){
        return _x;
    }

    public float getFY(){
        return _y;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                _x = event.getX();
                _y = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                _x = event.getX();
                _y = event.getY();
                break;
            case MotionEvent.ACTION_UP:
                break;
            default:
                break;
        }
        return true;
    }
}


hide

Re: [Android]座標取得

#2

投稿記事 by hide » 9年前

イベントというのははただイベントを受けるクラスを生成しただけでは動きません。

また、activityは基本的に1つだけが動いていると考えてください。
よってTouchEventActivityを動かそうとするとAndroidの館のIrairaBarActivityを止めるしかないです。
なので、Androidの館を改造する方法としてこのやり方は根本的に間違いです。

構造的にIrairaBarActivityはゲーム内容の個別のオブジェクトに対して関わるべきではなさそうなので、
利用しているViewあたりでイベントを拾うなどの方法が良いかと思います。

太陽
記事: 4
登録日時: 9年前
住所: 地球

Re: [Android]座標取得

#3

投稿記事 by 太陽 » 9年前

hide さんが書きました:イベントというのははただイベントを受けるクラスを生成しただけでは動きません。

また、activityは基本的に1つだけが動いていると考えてください。
よってTouchEventActivityを動かそうとするとAndroidの館のIrairaBarActivityを止めるしかないです。
なので、Androidの館を改造する方法としてこのやり方は根本的に間違いです。

構造的にIrairaBarActivityはゲーム内容の個別のオブジェクトに対して関わるべきではなさそうなので、
利用しているViewあたりでイベントを拾うなどの方法が良いかと思います。
わかりました。有り難うございます

閉鎖

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