2011-02-27 59 views
1

我剛剛開始在Android中開發,我正在嘗試做一個非常基礎的遊戲,你必須沿着屏幕底部移動一隻蝙蝠並在避開炸彈的同時捕捉物品。Android MotionEvent for Touch被壓下?

我遇到的問題是當手指放在屏幕的左側或右側時,我希望蝙蝠沿屏幕底部移動。

目前,當用戶觸摸屏幕時,我可以讓蝙蝠移動幾個像素,但直到用戶將他的手指從屏幕上移開時,我無法保持移動。

這裏是我的(非常)基本的代碼至今:

package com.mattdrewery.supercatch; 

import android.view.View; 
import android.view.MotionEvent; 
import android.content.Context; 
import android.graphics.Canvas; 

public class GameView extends View 
{ 
    private Catcher catcher; 

    public GameView(Context context) 
    { 
     super(context); 
     setFocusable(true); 

     // Create the catcher 
     catcher = new Catcher(context, R.drawable.catcher, 240, 250); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     // Draw the catcher to the canvas 
     canvas.drawBitmap(catcher.getImage(), catcher.getPosX(), catcher.getPosY(), null); 

     // Redraw the screen 
     invalidate(); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) 
    { 
     // Get the action from the touch screen 
     int eventAction = event.getAction(); 

     int X = (int) event.getX(); 
     int Y = (int) event.getY(); 

     // If the user presses on the screen.... 
     if (eventAction == MotionEvent.ACTION_DOWN) 
     { 
      catcher.moveLeft(); 
     } 

     // Redraw the screen 
     invalidate(); 

     return true; 
    } 
} 

的catcher.moveLeft()方法如下:

public void moveLeft() 
    { 
     posX -= 5; 
    } 

這件事的任何幫助,將不勝感激! :)

回答

4

我認爲這可能只是工作:

boolean actionUpFlag = false; 


if (eventAction == MotionEvent.ACTION_DOWN) 
     { 
      actionUpFlag = true; 
     } 
else if (eventAction == MotionEvent.ACTION_UP) 
     { 
      actionUpFlag = false; 
     } 

while (actionUpFlag) 
{ 
    catcher.moveLeft(); 
} 

這是你在找什麼?

0

ZoomControls使用ZoomButton,它幾乎做你想要的。它使用postDelayed()並檢查按鈕是否仍然按下來重複onClick操作。看看源代碼是如何工作的(我沒有深入,我只是一個提示)。

0

嘗試爲onTouchEvent返回false。如果處理事件,則應從文檔返回True,否則返回false。我認爲這會幫助你。

相關問題