2014-02-11 4 views
0

Я делаю простую игру в понг, и я пытаюсь сделать прямоугольную верхнюю остановку перемещающейся влево или вправо, когда она попадает в конец экрана. Я пытался сделать это с помощью несколько Иф в MotionEvent части, но он не работает, он просто получает от экрана, как там Арента любой IFS: DСтолкновение с экраном не работает

Я использую это, чтобы получить размер экрана:

 Point size = new Point(); 
     WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
     display.getSize(size); 
     canvasWidth = size.x; 
     canvasHeight = size.y; 
обнаружение

MotionEvent:

public boolean doTouchEvent(MotionEvent event){ 


     synchronized(mSurfaceHolder){ 

      switch(event.getAction()){ 


       case MotionEvent.ACTION_MOVE:{ 
        xTouch = (int)event.getX(); 
        yTouch = (int)event.getY(); 

        rectLeft = (float)xTouch-200; 
        rectTop = (float)yTouch+25; 
        rectRight = (float)xTouch+200; 
        rectBot = (float)yTouch-25; 

        if(rectLeft <= 0) 
         rectLeft = 0; 
        if(rectBot >= canvasWidth) 
         rectBot = canvasWidth; 
       } 
      } 

     } 
    } 

И рисунок прямоугольник:

public void draw(Canvas canvas) { 
    // TODO Auto-generated method stub 
    super.draw(canvas); 
    if(firstClick){ 
     //canvas.drawBitmap(img, xTouch - (imgWidth/2), yTouch - (imgHeight/2), null); 

     canvas.drawRect(rectLeft, rectTop, rectRight, rectBot, paint); 

    } 
} 

ответ

0

В ваших коллег de:

if(rectLeft <= 0) 
        rectLeft = 0; 

Я думаю, что вы забыли о настройке rectRight. Возможно, попробуйте:

if(rectLeft <= 0) { 
        rectLeft = 0; 
        rectRight = 200; 
} 

или что-то в этом роде.

+0

Работает ли он сейчас? @ imot01 – donfuxx

Смежные вопросы