如何在Android中选择画布上的形状

时间:2010-09-15 15:42:02

标签: android canvas

什么是在Android上创建飞镖游戏的最佳方式。是否有可能确定飞镖击中的位置以及使用画布在哪个区域?或者我是否需要使用不同的方法?

修改

对不起我不认为我已经很好地解释了我的问题。

在html5的svg中,我可以使用形状创建一个飞镖板,并为每个形状分配一个id。当飞镖落在一个形状上时,代码知道它落在哪个形状上,得到它的id并计算得分。例如id =“20”id =“60”id =“40”用于飞镖盘上的所有20个区域。

我如何在Android上执行此操作?

2 个答案:

答案 0 :(得分:2)

你有正确的想法。一种简单的方法是在活动中显示自定义DartBoardView。视图将使用重写的onDraw来绘制飞镖板图像以及用户“抛出”的任何飞镖。然后,视图将使用View.onTouchEvent来处理用户触摸事件并将其转换为新的飞镖。

答案 1 :(得分:1)

基于您的更新的新答案:

您将不得不手动进行命中检测。触摸事件将为您提供x-y坐标,其中视图的左上角为原点。计算点如下:

  1. 抵消给定的坐标,使它们与电路板的中心对齐(即触摸电路板的中间部分会给出(100,150),将其转换为(0,0))。
  2. 获取触摸的角度以找到板的哪个编号部分被击中。像double touchAngle = Math.atan2(y,x)这样的东西。可能需要在这里将弧度从弧度转换为度数。
  3. 将角度映射到基点值(如果角度> 9&& angle< 27,基点= 7)
  4. 如果距离中心的触摸距离(distance = Math.sqrt(x^2 + y^2))距离特定长度,则基点值乘以2或3,以说明乘数环。