Java Android App随机颜色和计时器

时间:2014-01-22 23:10:08

标签: java android random colors timer

我有一个应用程序有一个方块,每隔1.5秒在屏幕上移动一次,每次点击它都会得到一个点。我试图在每次点击方块时将颜色变为随机颜色。此外,我希望在较硬模式的设置下有一个选项,其中方块每隔0.7秒移动一次。

这是我的绘制方法:

protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLUE);
Paint dotPaint = new Paint();       
    canvas.drawRect(dotX, dotY, dotX + 60, dotY + 60, dotPaint);
dotPaint.setColor(Color.WHITE);
dotPaint.setTextSize(60); 
    canvas.drawText("Score: " + score, 20, 60, dotPaint);                                           

这是我的onTouch方法:

public boolean onTouch(View v, MotionEvent event) {
if (detectHit( (int)event.getX(), (int)event.getY() )) {
    score++;
    invalidate();
}
        return false;

我不太确定如何使广场的颜色每次点击都会改变。

Also, here is my menu items:

public boolean onOptionsItemSelected(MenuItem item) {
    // handle menu item selection
    switch (item.getItemId()){
        case R.id.item1:
            newGame();
            return true;
        case R.id.item2:
            quit();
            return true;
        case R.id.item3:
            harder();
            return true;
        default: 
            return super.onOptionsItemSelected(item);

and my harder method:
public void harder(){
    timer.schedule(task, 0, 700);
}

1 个答案:

答案 0 :(得分:1)

好吧只是一个建议,将你的detectHits()方法从(int ...,int ...)更改为(MotionEvent ...)会缩短调用。

对于随机颜色,您将能够以编程方式生成一个颜色。 您可能希望使用此Color.rgb(int red, int green, int blue)方法。

所以现在你要做的是,生成随机整数以生成颜色,就像这样

Random rnd = new Random();
Color rndCol = Color.rgb(rnd.nextInt(254), rnd.nextInt(254), rnd.nextInt(254));

现在你将应用这种颜色。 首先,它不鼓励在onDraw期间分配对象,因此将Paint的分配移动到onCreate / onResume并使其成为进程中的字段。然后你必须像这样调整你的onTouchMethod。

public boolean onTouch(View v, MotionEvent event) {
if (detectHit(event)) {
    changeColor();
    score++;
    invalidate();
}
return false;

private void changeColor(){
   Random rnd = new Random();
   Color rndCol = Color.rgb(rnd.nextInt(254), rnd.nextInt(254), rnd.nextInt(254));
   dotPaint.setColor(rndCol); // this should be a field by now and accessible from within this method
}

在将速度从1.5改为0.7的情况下,使时间成为类中的一个字段,并在某一点减少该值以减少计时器。

由于你没有显示你目前如何每1.5秒移动一个方格我不能为你调整代码。