本帖最后由 耒佲請ぁ留埗 于 2012-8-3 11:45 编辑 以下系列教程按讲课顺序排列,也是推荐阅读的顺序 第一讲:libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx http://www./android-57355-1-1.html 第二讲: libgdx游戏引擎教程(二) ApplicationListener,着手第一个程序!http://www./android-57372-1-1.html 第三讲:libgdx游戏引擎教程(三)libgdx粒子系统的使用 http://www./android-57456-1-1.html 外篇一:libgdx游戏引擎教程外篇(一)优美的自定义进度条(附源码) http://www./android-57523-1-1.html 第四讲:libgdx游戏引擎教程(四) 游戏正式开始,资源异步加载(附源码)http://www./android-57716-1-1.html 第五讲 :libgdx游戏引擎教程(五)多游戏界面的实现(一)附源码 http://www./android-57936-1-1.html 第六讲 :libgdx游戏引擎教程(六)多游戏界面的实现(二)附源码 http://www./android-57991-1-1.html 第七讲 : libgdx游戏引擎教程(七) 在libgdx中拦截Android按键事件 http://www./android-58030-1-1.html 外篇二: libgdx游戏引擎教程外篇(二)libgdx移植俄罗斯方块(附源码) http://www./android-58102-1-1.html 实战一:libgdx游戏引擎教程实战篇(一)移植俄罗斯方块(附源码) http://www./android-58404-1-1.html 实战二:libgdx游戏引擎教程实战篇(二)移植俄罗斯方块(附源码) http://www./android-58408-1-1.html 实战三:libgdx游戏引擎教程实战篇(三)移植俄罗斯方块(附源码) http://www./android-58414-1-1.html 实战四:libgdx游戏引擎教程实战篇(四)移植俄罗斯方块(附源码) http://www./android-58418-1-1.html 实战五:libgdx游戏引擎教程实战篇(五)移植俄罗斯方块(附源码) http://www./android-58419-1-1.html 实战六:libgdx游戏引擎教程实战篇(六)移植俄罗斯方块(附源码) http://www./android-58760-1-1.html 第八讲 : libgdx游戏引擎教程(八) libgdx中的用户手势识别(一)附源码 http://www./android-58933-1-1.html 第九讲 : libgdx游戏引擎教程(九) libgdx中的用户手势识别(二)附源码 http://www./android-59152-1-1.html 外篇三: libgdx游戏引擎教程外篇(三) 优美的自定义对话框(附源码) http://www./android-59654-1-1.html 第十讲: libgdx游戏引擎教程(十)演员类的复杂动画(一)(附源码) http://www./android-59998-1-2.html 第十一讲:libgdx游戏引擎教程(十一)演员类的复杂动画(二)(附源码) http://www./android-60053-1-1.html 第十二讲:libgdx游戏引擎教程(十二)演员类的复杂动画(三)(附源码) http://www./android-60194-1-1.html 第十三讲: libgdx游戏引擎教程(十三)演员类的用户交互功能详解(附源码) http://www./android-60457-1-1.html 最新更新 第十五讲 :libgdx游戏引擎教程(十五)在Libgdx中仿微信帮助滑动效果(附源码) http://www./android-60822-1-1.html 下面提到的可视化版的libgdx图片打包工具:TexturePacker: 本讲源代码下载: 这一讲我们来尝试用Libgdx来实现实现高仿launcher拖动效果。我们在第一次打开一个程序的时候总是会出现像这样的类似帮助的界面: 这样的界面可以用来提供用户操作帮助或者介绍软件新版本特性,现在越来越多的软件都加入了这样的界面。对于我们写游戏用的libgdx,当然我们可以用SDK中的ViewPager并置于一个Activity来实现这一功能(相当于前面我介绍过的AndroidApplication和Activity的混用),但是我在DDMS的内存监控中发现这种方法占用的内存比较多,对于我们游戏这种需要有严格内存管理的程序而言显然是不合算的,而且我前面也和大家提到过,在Libgdx中使用AndroidApplication和Activity混用的切换不是非常流畅,所以我们需要用Screen来实现同样的功能。 本讲的代码在十四讲的基础上进行修改,首先我们需要再添加一个按钮,用于进入我们将要编写的一个仿Launcher的Screen里面。另外我们将这个AndroidApplication在Manifest中从强制横屏改为强制竖屏,方便显示,不过这样的话我们曾经加入的Dialog显示就不太正确了,大家可以自行修改。 画红圈的就是我们新加入的按钮。然后我们新建一个Screen,用来仿launcher滑动的效果,初步工作我就在下面直接贴出来,后面复杂的工作我们再一步步来,重要的地方我都在里面做好了注释。这里使用了TexturePacker工具将几张图片打包然后一次性载入,具体如何使用大家可以查看官方文档或者查看巴士内一篇帖子: 我用这个可视化工具打包这次我们要用的图片: 这里建议大家用可视化版本的,极其方便,我会在附件中上传。
设置MyGame.java中新加入的按钮被按下时启动这个Screen,具体代码稍作修改大家可以看源码:
运行一下,并按下刚才我们加入的那个按钮,看看效果: 这时候我们还是不能翻动。我们这个Screen还实现了GestureListener这个接口,我们在pan()函数中监听手势翻动作用,并且做出相应的处理.我们考虑一下极端情况,用于标记第一张图片位置的变量position最大值无非就是0,显示后面的图片的时候,这张图片的位置左移,其值一定小于0,但是又不能小于一定值,position的最小值对应于最后一张图片在最右侧并且无法继续右移。下面要用到这个范围,不然会出很严重的问题。 再介绍一下pan()这个回调函数中的四个参数:
前两个参数指的是当前触摸点的x,y值,后两个标记当前用户手指的分别在x,y方向的移动速度。这里我们只用第一个参数x。简单的原理如下:用户的每次手势都会触发touchDown()方法,我们在touchDown()中存储当前按下的位置的x值,然后滑动手势开始后我们不停更新前一个位置,并且将position的大小做出相应的改变,改变量为当前位置的x值减去前一个位置的x值。我们先在PageScreen.java中添加相应的标记当前触摸点和上一个触摸点的x值的变量。
在touchDown()函数中标记currentx:
在pan()函数中做出相应的处理,当然首先应该满足我们上面提到过的,postion有最大值和最小值,不可能超过这个范围,这一点非常重要。
运行一下,看看效果: 我们发现,完全可以正常滑动了,不过还有一个小问题,整个页面的显示完全依赖我们的滑动,而不是像我们需要仿的Launcher滑动有个自动吸附的功能,也就是当滑动到一定程度的时候会自动跳转到下一个页面。因此我们还需要做进一步的处理。这里我们认为一张图片翻过一半的时候就应该跳转到下一张图片。我们在render()函数中实现这个效果,在手指按下的时候不回弹,手指松开后进行回弹的动作。我们需要在PageScreen.java中添加一个变量,用于回弹的标记:
修改后的render()函数如下,复杂的地方下面都做了注释:
运行一下: 功能完全正常效果也不错,而且由于使用了Screen实现,在切换界面的时候非常流畅,我们可以用它来实现libgdx游戏中的帮助效果。 Testin ID:ilovemkey@gmail.com 总的而言这个平台真的非常好用!我正是用这个平台发现了现在写的这个应用的一些内存管理方面的问题。另外建议能够在测试报告中看到某一台机型在整个执行过程中的cpu和内存占用的变化情况,这样可以更快地锁定问题。感谢Itestin让测试变得轻松了太多太多! |
|
来自: 昵称22194148 > 《android》