如何测试在绘制圆圈后是否未触及某些内容

时间:2015-05-05 19:38:10

标签: java android math canvas android-view

我有一个应用程序,一个接一个地将随机圆圈绘制到屏幕上。这些圆圈颜色也是随机的绿色或红色。如果你要点击一个红色的游戏,你就会松开游戏,如果要点击一个绿色游戏,你就会获得积分。我要做的是添加一个布尔值,检查是否有人没有点击绿色圆圈,或者在显示绿色圆圈时根本没有点击屏幕。如果显示红色圆圈并且用户未在任何地方点击任何事情,但是如果显示绿色圆圈并且没有点击任何内容,则应该将用户重定向到另一个类并且松开所有点。我试图创建一个名为isTouched的布尔值并将其赋值为false然后将其全部放在我的代码中但似乎没有任何效果。如果isTouched布尔值等于false,这是我的代码。

if(isTouched == false){
            howManyPoints = addPoints;
            handler.removeCallbacks(updateCircle);
            lastColor = redColor;
            addPoints = 0;
            Intent i = new Intent(this.getContext(), YouFailed.class);
            this.getContext().startActivity(i);

        }

这是整个班级。

public class DrawingView extends View{



    public DrawingView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub

    }
    RectF rectf = new RectF(0, 0, 200, 0);

    private static final int w = 100;
    public static int lastColor = Color.BLACK;
    private final Random random = new Random();
    private final Paint paint = new Paint();
    private final int radius = 230;
    private final Handler handler = new Handler();
    public static int redColor = Color.RED;
    public static int greenColor = Color.GREEN;
    int randomWidth = 0;
    int randomHeight = 0;
    public static int addPoints = 0;
    public static int savedScore;
    public static List<String> a = new ArrayList<String>();
    public static String[] savedScores = new String[a.size()];
    Paint red;
    public static int howManyPoints;
    boolean isTouched;

    private final Runnable updateCircle = new Runnable() {
        @Override 
        public void run() {
            lastColor = random.nextInt(2) == 1 ? redColor : greenColor;
            paint.setColor(lastColor);
            if(addPoints < 10){
                handler.postDelayed(this, 700);
            }
            if(addPoints > 9 && addPoints < 30){
                handler.postDelayed(this,550);
            }
            if(addPoints > 29){
                handler.postDelayed(this, 450);
            }
            postInvalidate();
        }
    };

    @Override 
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        handler.post(updateCircle);

    }

    @Override 
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        handler.removeCallbacks(updateCircle);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // your other stuff here
        Paint back = new Paint();
        back.setColor(Color.BLACK);
        Rect background = new Rect();
        background.set(0, 0, canvas.getWidth(),canvas.getHeight() );
        canvas.drawRect(background, back);

        Paint newPaint = new Paint();
        newPaint.setColor(Color.BLUE);
        newPaint.setTextSize(60);
        canvas.drawText("ALPHA 1.64.5", 10, 60, newPaint);



        if(random == null){
            randomWidth =(int) (random.nextInt(Math.abs(getWidth()-radius/2)) + radius/2f);
            randomHeight = (random.nextInt((int)Math.abs((getHeight()-radius/2 + radius/2f))));
        }else {
            randomWidth =(int) (random.nextInt(Math.abs(getWidth()-radius/2)) + radius/2f);
            randomHeight = (random.nextInt((int)Math.abs((getHeight()-radius/2 + radius/2f))));
        }
        canvas.drawCircle(randomWidth, randomHeight, radius, paint);

        red = new Paint();
        red.setColor(Color.BLUE);
        red.setTextSize(150);
        canvas.drawText("" + addPoints, 500, 1350, red);


    }



    @SuppressWarnings("deprecation")
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            int x = (int) event.getX();
            int y = (int) event.getY();
                if(isInsideCircle(x, y) ==  true){
                    //Do your things here
                        if(lastColor == redColor){
                            //saveScore();
                            howManyPoints = addPoints;
                            handler.removeCallbacks(updateCircle);
                            lastColor = redColor;
                            addPoints = 0;
                            Intent i = new Intent(this.getContext(), YouFailed.class);
                            this.getContext().startActivity(i);

                        } 
                        if(lastColor == greenColor){
                            addPoints++;
                            isTouched = true;

                        }
                }else  {

                }

        }
        if(isTouched == false){
            howManyPoints = addPoints;
            handler.removeCallbacks(updateCircle);
            lastColor = redColor;
            addPoints = 0;
            Intent i = new Intent(this.getContext(), YouFailed.class);
            this.getContext().startActivity(i);

        }
        return false;

}

public void saveScore() {
        a.add("" + addPoints);
        //if(Integer.parseInt(savedScores[1]) < addPoints){
            //savedScores[2] = savedScores[1];
            //int x = Integer.parseInt(savedScores[1]);
            //x = addPoints;
        //}
    }

public boolean isInsideCircle(int x, int y){
  if ((((x - randomWidth)*(x - randomWidth)) + ((y - randomHeight)*(y - randomHeight))) < ((radius)*(radius))){
    return true;
  }
  return false;    
}

}

0 个答案:

没有答案