【发布时间】:2013-08-17 05:26:17
【问题描述】:
我正在学习 Android 开发,并且正在尝试创建一个简单的单词搜索游戏。 首先,我创建了一个 LetterTile 类,它代表屏幕上的一个字母,并且这个类有自己绘制的方法。
然后我创建了一个 LetterMap 类,它是一个 LetterTile 的矩阵(如果我们使用 LetterMap(6, 6),它将在屏幕上绘制一个 6x6 的 LetterTile 矩阵)。
现在我想做的是,当我触摸一个 LetterTile 对象时,我可以用它做点什么。此时,我不能这样做,因为在 MainGamePanel 中我初始化了 LetterMap 对象,而不是 LetterTile 对象。
您可以在我的代码中看到,如果我初始化 LetterTile 对象,我只是使用 onTouchEvent 来处理问题,但现在我不知道如何处理 LetterMap
我做错了吗?还是我玩这个游戏的方法不对?
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
我不知道我是否理解您的代码,但我认为您的问题是 SurfaceView 的 onTouchEvent() 覆盖了 LetterTile 的 onTouchEvent。在这种情况下,我会覆盖你的surfaceView 的onInterceptTouch() 方法。请参阅下面的链接,也许这会对您有所帮助:stackoverflow.com/questions/16191914/…。否则,您必须提供更多信息,当您触摸 LetterTile 时发生了什么,尝试调试并查看您正在跳转哪些断点,哪些没有。
-
我定义的LetterTile和LetterMap还不是View。 LetterTile 是一个类(不是 View),具有在画布上绘制自身的方法,LetterMap 是一个组合了一些 LetterTile 的对象(类), LetterMap 的 draw 方法简单地调用每个 LetterTile 的 draw 方法。然后在SurfaceView的onDraw方法中,在屏幕上绘制LetterMap(从而绘制一个LetterTile的矩阵)。当我触摸 LetterTile 时,我只想让它发光或有什么东西表明我触摸了它(我认为这并不重要),但重要的是我如何触摸每个 LetterTile,而不是整个 LetterMap
-
这样你就可以触摸你的 LetterMap 了吗?这是正确的吗?当我查看您的代码时,我看不到您的 letterMap 的 TouchEvent。另一个问题:为什么你不使用视图?这是有原因的吗?
-
你可以在MainGamePanel中创建一个LetterTile对象,取消MainGamePanel的onTouchEvent方法的注释,然后你可以移动那个LetterTile,这样我的代码就可以控制单独的LetterTile触摸事件了,对吧?问题是 LetterTile 是 LetterMap 的一部分,但是在 MainGamePanel 中我只有 LetterMap 对象,我不知道如何控制 LetterMap 中每个 LetterTile 的触摸事件。
-
第二个问题的答案是:我不知道在这种情况下如何使用自定义视图(通过代码),我试试这个mobile.tutsplus.com/tutorials/android/…,但他们使用 XML 实现。对不起,如果我的解释不清楚
标签: android custom-component touch-event