weimingtom / loon-simple

Automatically exported from code.google.com/p/loon-simple
1 stars 0 forks source link

onDownUpEvent?应该是onKeyDownEvent吧? #19

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
0.2.8-update,看到IScreen时,
发现有public boolean onDownUpEvent(int keyCode, KeyEvent e);
感觉怪怪的,是否应该是onKeyDownEvent呢?

另外,我在将你给的俄罗斯方块的例子放到0.2.8的LGAME环境下�
��行(仅保留Main、ScreenTest2、TetrisField三个类,修改相应的继�
��关系),发现键盘的响应事件onkeydown每次都是响应两次,导
致本来有4个旋转方向的方块最终表现为只有2个旋转方向。不
太清楚是哪里的问题,特来求助,谢谢。

Original issue reported on code.google.com by sunny...@gmail.com on 11 Oct 2010 at 4:43

GoogleCodeExporter commented 8 years ago
呃,确实是名称错了,大约是小弟构建此函数的时候脑子被��
�水冲了,非常感谢您的告知|||……不过这个函数是给上层View
调用的,默认情况下我们使用的是Screen中的onKeyDown以及onKeyUp�
��所以叫什么函数名并没有实际影响。

俄罗斯方块那个例子是早在LGame-Android版正式发布前用“框架�
��型”构建的(2009年中旬),因为很多细节已经改变,所以��
�用到目前的LGame中会发生什么情况我也无法预知。

您可以自行修正到理想状态,或者等待我发布新的同类示例��
�键盘事件在使用上是正常的,再者目前支持Android系统的大多
为只有触摸屏的手机,键盘操作实际意义也不大,怎么都得��
�……

Original comment by loontest@gmail.com on 11 Oct 2010 at 9:56

GoogleCodeExporter commented 8 years ago
因为不清楚是否键盘处理事件封装有问题。所以我又尝试了on
touchdown,发现问题依旧,同样触发两次touch事件。如果您确认
事件使用没有问题,那么我只能采取置标志位的方式修正了��
�?我总觉得这样做好丑陋啊。。。=。=  
如果您有比较多的空闲时间,能告知常用的联系方式么,QQ 
MSN 
GTALK等等,我对移动开发很有兴趣但又很菜,难得抱到一个态
度这么好的大腿啊。。。

Original comment by sunny...@gmail.com on 11 Oct 2010 at 10:55

GoogleCodeExporter commented 8 years ago
原则上不可能有这个问题,因为小弟大部分程序都是放到andro
id 
market上做过测试的,您使用真机测试吗?真机的话麻烦您告��
�一下机型,我好找来测试一下。另外您在onTouchDown时return的��
�什么?true or false?

建议您拿我最近发的那个连连看的小例子跑跑看,瞧瞧有没��
�这种情况。

Original comment by loontest@gmail.com on 11 Oct 2010 at 12:22

GoogleCodeExporter commented 8 years ago
果然。。。原先的代码中都是return 
false,我以为是一种override的处理。。。return 
true后不会两次触发了,但是menu键似乎又不响应了?onCreateOpti
onsMenu等我都是return 
true。不太清楚这里的true/false都是什么意思?文档中只讲了各
函数的作用,但对参数和返回值都没什么说明啊

Original comment by sunny...@gmail.com on 11 Oct 2010 at 1:12

GoogleCodeExporter commented 8 years ago
因为返回值对应的是Android本身的事件机制,所以目前文档中�
��有说明,只有当返回值为true时Android系统本身的消息驱动机�
��才会触发正常的点击事件(顺便一提,仿J2ME制作的CanvasScree
n默认返回值为true)。

至于onCreateOptionsMenu,问题在于LGame引擎本身并不支持onCreateOpt
ionsMenu事件(没有相关封装,因为LGame有自己的一套原生组件�
��且默认支持拖拽),如果想要调用相关事件,可在Activity中�
��用getFrameLayout得到当前界面的FrameLayout布局,而后按照正常��
�Android组件使用方式添加相关组件。

Original comment by loontest@gmail.com on 11 Oct 2010 at 1:40

GoogleCodeExporter commented 8 years ago
不过说实话,个人以为用LGame默认的原生组件(纯绘制)来制
作按钮比Android默认的按钮方便多了,不信可参照0.2.8版中的AV
G示例,所有常规游戏的按钮图都可以拿来就用(示例中的按�
��图来自于日本“吉里吉里”galgame引擎开发的游戏用图,完��
�不用改,相关资源相当丰富的~~~),而且调整透明度啦�
��自由拖拽等也非常省事……

哪像Android原生的,光布局就得设定半天,隐藏出现还得考虑�
��程问题……

Original comment by loontest@gmail.com on 11 Oct 2010 at 1:46

GoogleCodeExporter commented 8 years ago
感谢你如此热心的回复。原生menu的好处是不需要占用游戏界�
��空间啊。我不太理解这样的情况,keyevent返回false的时候,me
nu正常响应,但键盘或触摸事件触发两次。反之若返回true,��
�只触发一次事件,但menu不响应。难道没有什么简单的workaroun
d吗?menu事件的封装和布局有什么关系吗?

Original comment by sunny...@gmail.com on 12 Oct 2010 at 7:13

GoogleCodeExporter commented 8 years ago
您好,其实用LGame原生的按钮一样可以实现一组按钮滑动出现
并消失的效果啊,而且比生硬的Android原生菜单按钮更贴近游�
��内容。

返回true时将通知Android系统事件完成,在此后进行按钮的事件
就不会触发了,而LGame中触屏及键盘的发动顺序早于系统的onC
reateOptionsMenu事件,所以没有经过LGame封装的onCreateOptionsMenu在�
��回true时无法运行。

Android的布局器实际上是个容器,不同的容器以不同的方式加�
��Android原生组件,而FrameLayout作为最基础的Android布局,可以��
�加任何子布局及组件到其中,关于菜单的使用,具体可搜索�
��android 三种菜单”字样,有相关文章。

Original comment by loontest@gmail.com on 12 Oct 2010 at 2:08

GoogleCodeExporter commented 8 years ago
您好,小弟刚刚制作了一个LGame更新jar包,其中已经进行了必
要的菜单事件封装(调整了菜单事件触发顺序),并为Screen��
�供了onCreateOptionsMenu,onOptionsItemSelected,onOptionsMenuClosed函数,重
载即可实现对应操作。这样随着Screen的切换,将能够直接呈��
�不同的菜单项,比Activity切换更加随意。

当然,由于已经改变了事件触发顺序,原有的重载Activity弹出
菜单方式此时也没有问题了(但重载时建议使用super方式调用
一次原有函数,否则LGame的此部分封装将失效,意味着不能直
接在Screen中重载函数切换菜单)。

PS:个人还是喜欢用LGame的原生按钮做菜单……

由于google近期维护,更新版的jar及源码已先行上传到SVN的LGame
-Android版0.2.8目录下,直接下载版预计周五(维护结束后)上�
��。

Original comment by loontest@gmail.com on 13 Oct 2010 at 3:31

GoogleCodeExporter commented 8 years ago

Original comment by loontest@gmail.com on 13 Oct 2010 at 3:36