写了一个游戏,当执行触摸操作的时候,游戏帧数明显下降有用到多线程,游戏逻辑及绘图都在一个新建的线程里执行。大致代码如下,现在不知道是不是线程阻塞引起的,要怎么解决,请高手帮忙!public class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback
{    
    private SurfaceHolder mHolder;
    public GameSurfaceView(Context context) {  //
        super(context);
        con = context;
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_GPU);
        setFocusable(false);
        setFocusableInTouchMode(true);
    } 
    @Override   
    public boolean onTouchEvent(MotionEvent me) 
    {
     if(me.getAction() == MotionEvent.ACTION_DOWN) {
     float x = me.getX();
     float y = me.getY();
                  Touch(x,y)
     }
else if(me.getAction() == MotionEvent.ACTION_UP) {
     float x = me.getX();
     float y = me.getY();
                  Touch(x,y)
     }
     else if(me.getAction() == MotionEvent.ACTION_MOVE)
     {
     float x = me.getX();
     float y = me.getY(); 
                  Touch(x,y)     }
         return true;
    }
    
     class GameThread extends Thread {
         @Override
         public void run() {
             while(1)
             {
                   GameRun();
                   GamePaint();
              }
         }
     }
}

解决方案 »

  1.   

    游戏帧数明显下降你怎么确定的? 也许不是这个问题
    还有 单从你以上代码看 没看出什么问题 而且没发现线程和你的游戏画布类的关系你做onTouchEvent这个方法的时候没必要那样写吧 几个if else都是在做一样的事啊
      

  2.   

    看了半天的确是很奇怪,如果说帧数下降,个人认为可能有以下原因:
    1. onTouchEvent中,没有设置不响应区域。这样会造成在触摸点下时,连续发出keyevent_down和keyevent_move的消息,导致onTouch这个函数处理速度降低。
    2. 是否起了过多的线程,出现了线程等待的情况。
    3. 对图像的处理过于耗时。