2012-01-27 51 views
0

为了说游戏开发的目的,是否可以设置视图并创建一个扩展按钮或实现可点击或类的类。我试图找出处理屏幕上移动对象的屏幕点击的最佳方法,现在我在一个画布中绘制所有内容,画布中的内容被绘制到一个视图,但我不能使单个位图表示对象可点击。Android - 是否有可能在视图中动态移动可单击对象

因此,在我抛出了大量工作并尝试它之后,是否有人知道它是否可以在可独立处理屏幕点击的视图中动态移动对象。

+1

http://stackoverflow.com/questions/6662920/android-canvas-draw-circles-and-get-touch-events或http://praveenmax.wordpress.com/2011/02/02/painting-a -ircle-using-touchlistener/ – nik431 2012-01-27 10:19:24

+0

感谢您的链接:) – 2012-01-27 18:28:55

回答

2

添加OnTouchListener你的观点(即绘制在画布上的所有对象的一个​​),并在onTouch(View v, MotionEvent event),得到事件的坐标:

int x = event.getX(); 
int y = event.getY(); 

然后通过你的对象循环,你绘制并查看这些坐标是否在该对象的当前区域上,如果是,则知道它已被点击。

+0

我已经实现了这一点,但由于某种原因,我的点击没有正确注册约75%的时间。我为该特定实例在内存中有一个ListArray对象,如果设备注册了一个屏幕点击,然后触发一个自定义方法,该方法遍历listarray中的所有对象,直到列表中的某个项目的坐标与屏幕点击。就像我说的那样,这个工作有些时候,通常适用于0-5个屏幕对象,但有时我会在屏幕上有40或50个以上的对象,其中一些实际上是对方的前面。 – 2012-01-27 18:28:32

+0

它当时我有大量的屏幕上的对象,这种当前使用的方法使用分解并变得不可靠。所以.....我试图想出一种方法来使一个对象具有视图的属性,我可以在我的视图中绘制,我不知道这是否会工作。如果每个对象都像一个视图,我可以让它引用它自己的点击,而不是开始一个迭代通过最多可能有80个或更多对象的数组的过程,其中一些可能在屏幕上彼此重叠。 – 2012-01-27 18:32:14

+1

我认为现在做的效率会更高,但是对于那些很多对象需要的是一个排序好的列表,以便在其他对象上方绘制的对象可以注册点击,而不是其后面的东西。 – Jave 2012-01-27 19:04:10

相关问题