Сблъсък с екрана не работи

Правя проста игра на понг и се опитвам да накарам горната част на правоъгълника да спре да се движи наляво или надясно, когато достигне края на екрана. Опитах се да направя това с няколко Ifs в частта 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);

    }
}

person imot01    schedule 11.02.2014    source източник


Отговори (1)


Във вашия код:

if(rectLeft <= 0)
                    rectLeft = 0;

Мисля, че сте забравили за настройката rectRight. Може би опитайте:

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

Или нещо такова.

person donfuxx    schedule 11.02.2014