Android Multitouch Game

В настоящее время я работаю над игрой, в которой пользователь управляет кораблем с помощью экранного джойстика в левой части экрана и стреляет, касаясь правой стороны экрана. Однако мои попытки мультитач не увенчались успехом. Когда пользователь сначала касается джойстика, а затем стреляет, он работает отлично, но когда пользователь касается джойстика во время стрельбы, пользователь не может перетащить джойстик. Я все еще новичок в Android, поэтому любая помощь будет принята с благодарностью. Я вставлю код ниже.

@Override
public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction() & MotionEvent.ACTION_MASK;
    int pointerIndex=(event.getAction()&MotionEvent.ACTION_POINTER_ID_MASK) 
    >>MotionEvent.ACTION_POINTER_ID_SHIFT;
    int pI = event.getPointerId(pointerIndex);
    //On screen joystick
    if(event.getX(pI)<pad.getWidth()+(screenWidth*.18)&&event.getX(pI)>0&&event.getY(pI)<(screenHeight)&&event.getY(pI)>(screenHeight-(0.42*screenHeight))){
        sx2=event.getX(pI)-(stick.getWidth()/2);
        sy2=event.getY(pI);
        angle=(Math.atan2((sy2-sy),(sx2-sx)));
    }
    //firing system
    if(event.getX(pI)>screenWidth/3){
        switch(action){
        case MotionEvent.ACTION_DOWN:
            incrementRunnable.run();
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            incrementRunnable.run();
            break;
        case MotionEvent.ACTION_UP:
            handler.removeCallbacks(incrementRunnable);
            break;
        case MotionEvent.ACTION_POINTER_UP:
            handler.removeCallbacks(incrementRunnable);
            break;
        }

    }
    //reset joystick
    if(event.getAction()==MotionEvent.ACTION_UP||event.getAction()==MotionEvent.ACTION_POINTER_UP){
        sx2=sx;
        sy2=sy;
        handler.removeCallbacks(incrementRunnable);
    }
    return true;
}
7
задан user1229888 24 February 2012 в 04:23
поделиться