我一直致力于游戏,只需在用户触摸屏幕时创建一个矩形,我不知道如何让touchEvent的X坐标和Y坐标成为我的rects的“浮动”,每次我放一个在X,Y坐标中浮点数表示“(float,float,int,int)中没有适用的构造函数”。我不知道这意味着什么。
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 :(得分:0)
答案 1 :(得分:0)
请参阅Rect的Constructor
public Rect(int,int,int,int);
期望所有参数都为int
您需要将float
到int
int xCoor = (int)event.getX();
int yCoor = (int)event.getY();
答案 2 :(得分: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);
答案 3 :(得分:0)
通过调用构造函数Rect,将新的Rect添加到ArrayList中。 new Rect告诉Java创建一个新的Rect对象。
构造函数就像一个方法,除了它与它所在的类具有相同的名称。恰好,Rect类没有一个带浮点作为其参数的构造函数。
因此,在将浮点数传递给Rect构造函数之前,必须将浮点数转换为整数。
int xCoor = (int) event.getX();
int yCoor = (int) event.getY();
另请注意,当您进行转换(转换从一种类型转换为另一种类型)时,该值只会向下舍入到最接近的整数。事实上,小数点之后的任何内容都会被丢弃。
我认为如果你的Android开发取得成功,你最好能够获得一本关于Java的面向对象编程的优秀教科书。