0

描画中のキャンバスの動作に疑問があります。たとえば、コードでは、キャンバスが描画呼び出しを保持し、ビットマップが実際のピクセルデータを保持していると述べられています。

public class MyView extends View{

    private Paint _p;
    public float x=10,y=10;
    private Canvas _canvas;
     static int cnt=0;

    public MyView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        _p = new Paint();
        _p.setColor(Color.GREEN);
        _canvas = new Canvas();

        this.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                cnt++;
                _canvas.drawCircle(event.getX(), event.getY(), 10, _p);
                if(cnt>3){
                    cnt = 0;
                    invalidate();
                }
                return false;
            }
        });

    }

    public void onDraw(Canvas can){
        _canvas = can;
        super.onDraw(_canvas);
        _canvas.drawColor(Color.BLACK);
        _canvas.drawCircle(x, y, 10, _p);
        x = x +10;
        y= y+10;
    }
}

3つの円を描く必要がありますが、そうではありません。誰か説明してもらえますか?よろしくお願いします。

よろしく、Rohit

4

1 に答える 1

0

onTouch には、円を描画するための 1 回限りのチェックしかありません。3 つ描画されるまで描画を続ける再帰ループではありません。これは、_canvase.drawCircle() イベント (表示されていません) が 3 つの円を描画しないことを前提としています。

于 2012-04-05T05:12:06.977 に答える