2014-01-22 6 views
0

나는 사용자가 화면을 터치 할 때 단순히 직사각형을 만드는 게임을하고있다. touchEvent의 X 좌표와 Y 좌표를 내 rect의 "float"로 가져 오는 방법을 모르겠다. float을 넣을 때마다 X, Y 좌표의 숫자는 "(float, float, int, int)에 적용 가능한 생성자가 없습니다"라고 말합니다. 나는 그것이 무엇을 의미하는지 모른다. Android에서 onTouchEvent를 그리는 사각형을 만드는 방법은 무엇입니까?

대신 당신이 플로트에 대한 RectF을 사용할 수 있습니다 당신은 INT 값 Rect를 사용하는

public class GameBoard extends View { 

    private ArrayList<Rect> rectangles = new ArrayList<Rect>(); 

    public GameBoard(Context context) { 
     super(context); 

    } 
    @Override 
    public boolean onTouchEvent (MotionEvent event) { 
     float xCoor = event.getX(); 
     float yCoor = event.getY(); 

     switch (event.getAction()){ 
      case MotionEvent.ACTION_DOWN: 
       rectangles.add(new Rect(xCoor, yCoor, 10, 40)); 
       break; 
     } 
     return true; 
    } 
    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Paint paint = new Paint(); 
     paint.setColor(Color.BLUE); 
     for (Rect rect : rectangles) { 
      canvas.drawRect(rect, paint); 
     } 
    } 
} 

답변

0

당신은 생성자 사각형을 호출하여 ArrayList에에 새 사각형을 추가로 x와 y 값을 타입 변환해야합니다. new Rect는 Java에 새로운 Rect 객체를 생성하도록 지시합니다.

생성자는 클래스와 동일한 이름을 제외하고 메서드와 같습니다. Rect 클래스에는 float를 매개 변수로 사용하는 생성자가 없습니다.

따라서 Rect 생성자에 전달하기 전에 부동 소수점을 정수로 변환해야합니다.

캐스팅 할 때 (캐스팅이 한 유형에서 다른 유형으로 변환 중일 때) 값이 가장 가까운 정수로 반올림되었음을 주목하십시오. 사실 소수점 이하의 것은 단순히 버려집니다.

안드로이드 개발 성공을 위해 Java에서 객체 지향 프로그래밍에 대한 좋은 교과서를 얻는 것이 가장 좋을 것이라고 생각합니다.

+0

"캐스팅"에 대한 설명에 정말로 감사 드리며 지금은 소수를 사용하지 않는 이유를 알고 있습니다. – user3055552

0

new RectF(xCoor, yCoor, 10, 40) 
0

모든 기대

public Rect(int,int,int,int); 

사각형

Constructor 참조 값 매개 변수는 int

당신은 float에서 int

int xCoor = (int)event.getX(); 
    int yCoor = (int)event.getY(); 
0
try to use this ::->  


DrawingImage = (ImageView) this.findViewById(R.id.DrawingImageView1); 

     Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager() 
      .getDefaultDisplay().getWidth(), (int) getWindowManager() 
      .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888); 

     Canvas canvas = new Canvas(bitmap); 
     DrawingImage.setImageBitmap(bitmap); 

     // Draw Rectangle 

     Paint paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setStyle(Paint.Style.FILL_AND_STROKE); 
     paint.setStrokeWidth(10); 

     float left = 20; 
     float top = 20; 
     float right = 50; 
     float bottom = 100; 

     canvas.drawRect(left, top, right, bottom, paint);