懒骨头(http://blog.csdn.com/iamlazybone)
0.添加自己的FPS统计类:
本来Rokon有自己的FPScounter类,可只能通过debug打印显示出来,而且由于包的访问权限,无法自由的调用。于是添加一个自己的FPS统计类:
用法是在你的Scene类的onGameLoog()方法里调用MyFPSCounter.onFrame()方法。MyFPSCounter.FPS即是当前的游戏帧数。
1.设置背景图片无法显示:(From:woohyuknrg)
setBackground(new FixedBackground(Textures.background));
有些时候在Scene的构造函数中调用setBackground,竟然不会显示背景图片,有人说是图片问题,其实不然,若该方法不起作用,试试:
2.本无法显示,也就是TextSprite不起作用,已有不少人提交了这个bug,不过目前作者还没改好,我写的代码如下:(From:woohyuknrg)
我的解决方法:activity里调用createEngine(true),看过源代码的应该知道传参数true创建的引擎还包括一个RelativeLayout实例,通过getInterface()方法获取。
那我可以这么作:
其中score_text.xml就是一个AbsoluteLayout包含TextView,你可以设置这个TextView的坐标放置在界面任意地方,这样就解决了游戏中分数等文本的显示。
3.灵异bug:显示的图片发生“穿越”:(From:woohyuknrg)
至少我在开发过程中遇到不止一次了~~即使显示一个背景图,却发现这个背景图上多了一截其它图,估计跟TextureAtlas的使用有关。作者的示例教程中这样用的:
当然我添加的图片不止一张,其中有若干insert函数的调用,并且我有多少个图片需要添加,在TextureAtlas构造函数我是传了参数的,如:new TextureAtlas(11);
解决方法:直接background = new Texture("bg.png"));不把这个Texture插入到TextureAtlas
4.Scene构造函数或者onReady函数中初始化sprite后立即执行animate函数不起作用:(From:woohyuknrg)
这个bug我也提交了的,结果后来发现有个人跟我一样也提交了这个bug,只有寄希望于作者早日修改。这个bug很奇怪,我游戏运行起来黑屏,什么都没显示,但是背景音乐还在播放,logcat也没输出什么异常错误,说明游戏还在正常运行~~~~只是黑屏
这个问题的补充,我才发现:我附件的demo由于是一启动游戏就进入了游戏界面,游戏Scene类构造函数里执行animate会黑屏。 后来我用在其他正规游戏里,进入时先是菜单按钮界面,点击开始游戏按钮后进入游戏主界面,这时在scene的构造函数里执行animate就没有问题,sprite正常播放帧动画!
5.调用scene.clearLayer(0)不起作用:(From:woohyuknrg)
clearLayer函数是清除某一层上的所有sprites,我在游戏里调用不起作用!
不过改成执行getLayer(0).clear()却起作用了~~~~~~~查看源码,clearLayer其实就是去调用的layer.clear(),为什么clearLayer不起作用,相当古怪~~~~~~希望大家也试试,看是否和我一样的情况
6.box2d的FixtureDef.filter不起作用:(From:woohyuknrg)
用过或学过box2d的应该都知道FixtureDef的filter是用来精确控制游戏里哪些sprite可以碰撞,哪些不碰撞。可是我设置其groupIndex或categoryBits和maskBits均不起作用,我已提交了这个bug,有兴趣的朋友也可以自己试下验证是否有该bug
看了下World类源代码,这个函数是控制碰撞筛选的:
else里直接return true了,当然设置filter不起作用!我又把Libgdx引擎源代码从svn down下来,对比一看,实际函数体应该是这样的:
只是Rokon引擎作者个人把else的函数体去掉了。不过不用filter也罢,因为明显还可以实现contactFilter这个接口的shouldCollide方法来控制我游戏里哪些精灵碰撞和不碰撞~
从网上下载最新的2.1.0自己打包出来的jar很多人运行都会遇到黑屏,其实是VBO在作怪,因为貌似很多机型都不支持VBO,偏偏作者还专门写了利用VBO绘制,只要在你的子类activity的onCreate里加上setDrawPriority(DrawPriority.PRIORITY_NORMAL); 应该就可以了,如果还是没有背景图片显示,请参照问题1
问题3的灵异bug,图片穿越:任何灵异事件都有根有据,不可能平白无故发生,我debug找到问题所在,TextureAtlas类的findRightSpot函数126行:
if(checkX + texture.width > atlasWidth) 改成if(checkX + texture.width >= atlasWidth)即可,不要问我为什么,自己去钻研rokon这源代码并打出一些info你就明白了;顺便提一句:TextureAtlas的insert方法应该从最大尺寸图开始添加,作者的新手教程里也有说~~~
7.重力感应控制的问题:(From:woohyuknrg)
rokon里有Accelerometer类,其中的函数stopListening是用来停止感应事件监听的,我从游戏界面返回菜单界面调用了这个方法,再次进入游戏界面会又调用startListening函数启动监听,不过这是游戏却不响应重力感应了。最后找到问题解决:stopListening函数里解除监听后添加一句sensorEventListener = null;
8.背景音乐播放问题:(From:woohyuknrg)
第一次游戏没问题,退出游戏再次进入发现背景音乐没有播放! 解决办法:在RokonMusic类里添加一个函数:
退出游戏时调用下该函数即可
9.Layer的clear函数:(From:woohyuknrg)
删除某层中的全部sprite,这个问题我向作者反应过,他确实改过,不过我觉得还是不对,我就自己改成这样了:
后话:最初发文时已注明原作者woohyuknrg,见被推荐不敢抢功,再次声明,原帖传送带。
===============您可以乘坐飞船到骨头的其他Rokon教程===============
Android游戏引擎《Rokon》学习笔记一:为你的项目添加Rokon框架
Android游戏引擎《Rokon》学习笔记二:HelloWorld
Android游戏引擎《Rokon》学习笔记三:精灵类Sprites的使用
Android游戏引擎《Rokon》学习笔记四:添加触摸控制
Android游戏引擎《Rokon》学习笔记五:Modifiers修饰类的使用
Android游戏引擎《Rokon》学习笔记六:一个使用Box2D的Rokon小例子:Rokon Donate
Android游戏引擎《Rokon》:主要类和方法的介绍文档
分享到:
相关推荐
Android游戏引擎《Rokon》:常见问题汇总
android 游戏引擎Rokon实例教程
Android游戏引擎《Rokon》学习笔记.doc
android 游戏引擎 rokon 源代码
Android游戏引擎《Rokon》:主要类和方法的介绍文档
罗康 适用于 Android 的旧 OpenGL ES 1.1 图形/游戏引擎。 2009 年中期至 2010 年中期开发。 目前大多不相关; 为了历史,从谷歌代码迁移。
Android小游戏安卓游戏源码45款合集: 21点游戏源码.rar Angle v1.0.ZIP Barrage_OpenGLES.rar Billiard_2D.zip catcake-0.9.5-android.tar.gz Chess.rar Crackedcarrot.rar CrazyFootBall.zip EggGame.rar Elose-wr....
createEngine boolean createRelativeLayout 参数为true创建包含SurfaceView和RelativeLayout的引擎 RalativeLayout可添加其他Android组件 以下4个函数须在createEngine前调用:">Rokon api说明 doc 介绍Rokon游戏...
Android引擎框架Rokon中文文档
安卓Android源码——rokon_src_2-0-3_游戏引擎.zip
安卓Android源码——rokon_lib_2-0-3.zip
游戏引擎——Rokon中文API,可以帮助新手更快的了解rokon
Android应用源码之rokon_src_2-0-3_游戏引擎.zip
rokon引擎相关API 主要函数的说明
Android应用源码开发Demo,主要用于毕业设计学习。
Android程序研发源码rokon_src_2-0-3_游戏引擎.zip
一个使用了Rokon游戏引擎的小游戏,可以作为学习游戏开发的入门了解资料
rokon_lib_2-0-3.zip