微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

〖用cocos2d-android引擎写游戏〗(一)第一个程序HelloWorld

〖用cocos2d-android引擎写游戏〗(一)第一个程序HelloWorld

分类 Cocos2d-android引擎 4380人阅读 评论(1) 收藏 举报

文本为CC原创,如需转载请注明本文地址:http://www.jb51.cc/article/p-bpillphp-g.html

首先自我介绍,本人大三学生党码农一枚,大一大二做过JavaEE和Android应用,目前在专心学习C++和Cocos2d-x手游开发。

cocos2d和cocos2d-x引擎想必大家都已经非常熟悉,这次向大家介绍一下cocos2d的android平台移植版~cocos2d-android引擎,该引擎采用Java编写,适合所有已经掌握了Java基础和有一定Android开发经验的朋友们学习,关于cocos2d-android的详细信息看。

话说cocos2d-android网上相关的资料少的可怜,在百度上几乎很难搜到,如果想查阅资料建议去Google上搜索,半年前我在做android开发时对C++还不是很熟悉,所以选择学习了java版的cocos2d-android引擎,资料少真的学的很吃力,我刚开始用它的时候完全是查阅的cocos2d和cocos2d-x的文档学习的,还好cocos2d-android版本的API基本和cocos2d和cocos2d-x没太大差别,只是不如cocos2d-x功能完善,也存在部分bug,不过这些丝毫都不影响你开发一款简单实用的小游戏,以后会经常更新博客来把我对cocos2d-android的学经验提供给大家~。

ok废话不多说,下面开始进入正题。


第一步:创建一个AndroidProject,SDK版本为2.3.3,同创建普通的Android应用一样,如下图所示:


第二步:导入cocos2d-android的jar包,该引擎jar包下载地址:http://download.csdn.net/detail/oktears/6022191

导入jar包后,开发环境就算搭建ok拉,下面我们开始编码。

第三步:开始进行编码,我们想要实现的效果是将一张HelloWorld的图片印在游戏背景上。

  1. publicclassCocos2dActivityextendsActivity{
  2. @Override
  3. publicvoidonCreate(BundlesavedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. CCGLSurfaceViewccglSurfaceView=newCCGLSurfaceView(this);//cocos2d提供的SurfaceView
  6. setContentView(ccglSurfaceView);//设置Activity显示的view
  7. CCDirector.sharedDirector().attachInView(ccglSurfaceView);
  8. //CCDirector导演,负责管理和切换场景,负责初始化OPENGL的各项参数
  9. //CCDirector采用单例模式,通过sharedDirector()方法获取其唯一的实例
  10. //attachInView与OpenGL的SurfaceView进行连接,意思是将surfaceView交给cocos2d来管理
  11. CCDirector.sharedDirector().setdisplayFPS(true);
  12. //显示fps,需要添加fps_images.png到assets中,否则会报nullpointer,在CCDirector源码中可以看出
  13. CCDirector.sharedDirector().setAnimationInterval(1.0f/60);//设置帧率60帧每秒,人的肉眼识别帧率为60,所以设置为60最为合理
  14. CCDirector.sharedDirector().setDeviceOrientation(
  15. CCDirector.kCCDeviceOrientationPortrait);//设置为横屏显示
  16. CCDirector.sharedDirector().setScreenSize(800,480);
  17. //设置横屏后的分辨率,其实是将屏幕横竖分成800和480个小块
  18. CCSceneccScene=CCScene.node();//创建一个场景,用来显示游戏界面
  19. ccScene.addChild(newMycclayer());//将Mycclayer层加到场景里
  20. CCDirector.sharedDirector().runWithScene(ccScene);//运行场景
  21. }
  22. @Override
  23. protectedvoidonResume(){
  24. super.onResume();
  25. CCDirector.sharedDirector().resume();
  26. //恢复游戏运行
  27. //cocos2d提供3个生命周期方法,对应android的三个生命周期
  28. }
  29. @Override
  30. protectedvoidonPause(){
  31. super.onPause();
  32. CCDirector.sharedDirector().onPause();
  33. //暂停,游戏切出时候调用
  34. }
  35. @Override
  36. protectedvoidonDestroy(){
  37. super.onDestroy();
  38. CCDirector.sharedDirector().end();
  39. //结束,游戏退出调用

  1. publicclassMycclayerextendscclayer{
  2. privateCCSpritesprite_game_bg=null;//游戏背景精灵
  3. privateCCSpritesprite_helloword=null;//helloworld精灵
  4. publicMycclayer(){
  5. init();
  6. }
  7. privatevoidinit(){
  8. sprite_game_bg=CCSprite.sprite("bg.png");
  9. //CCSprite游戏精灵类,需要加载一张图片代表游戏精灵
  10. sprite_game_bg.setAnchorPoint(CGPoint.getZero());
  11. //设置精灵的锚点
  12. //锚点是设置在屏幕上显示的位置,原点为自身左下角为准,锚点的值乘以被设置锚点的元素宽或高,为移动的距离
  13. sprite_game_bg.setPosition(CGPoint.getZero());
  14. //设置精灵的坐标,以屏幕的左下角为原点,向右,向上为正方向,属于OpenGL坐标系
  15. this.addChild(sprite_game_bg,0,0);
  16. //this指代当前对象,即Mycclayer
  17. //给当前图层添加一个子元素
  18. //参数1:子元素对象,参数2:子元素重要性,参数3:子元素的标签(可以通过标签取出该元素)
  19. sprite_helloword=CCSprite.sprite("helloworld.png");
  20. sprite_helloword.setAnchorPoint(CGPoint.getZero());
  21. sprite_helloword.setPosition(
  22. (this.getContentSize().width-sprite_helloword
  23. .getContentSize().width)/2,
  24. (this.getContentSize().height-sprite_helloword
  25. .getContentSize().height)/2);
  26. //让其显示最屏幕正中间
  27. this.addChild(sprite_helloword,1,1);
  28. //sprite_helloword精灵的重要性为1,而sprite_game_bg的重要性为0
  29. //所以sprite_helloword会显示在sprite_game_bg的上方
  30. //换言之就是重要性越高,越优先显示在上层
  31. }
  32. }

下面列出以上使用的几个Cocos2d-android中常用类及其方法功能
(1).CCDirector,导演类,负责管理和切换场景。还负责初始化openGL各项参数。
CCDirector引擎的控制者,控制场景的切换,游戏引擎属性的设置
1. 单例模式,sharedDirector()取得导演对象
2. attachInView()连接OpenGL的SurfaceView
3. setDeviceOrientation()设置横屏竖屏
4. setdisplayFPS(true)显示fps帧率,这里特别注意,一定要把fps_images.png这张图片放到assets文件夹下,否则会出现空指针异常
5. setAnimationInterval(1.0f / 60)设置帧率,每秒刷新60次
6. setScreenSize(800,480)设置屏幕分辨率,高于设置的分辨率时,引擎会自动适配
7. runWithScene()运行场景
8. replaceScene()改变场景,游戏切换场景时使用
9. resume()进入运行状态,cocos2d-android提供了3种生命周期函数,分别与android中的三个生命周期对应,resume在恢复场景时调用
10. pause()暂停,可停止所有正在执行动作的精灵操作
11. end()结束,退出cocos2d管理,释放所有占用资源
(2).CCScene,场景类,比如游戏中的设置界面,选择关卡界面,游戏失败界面等等。
(3).cclayer,图层类,附加在场景之中,一个场景可以有多个图层来组成,如果使用过PS绘图将会很容易理解。
(4).CCSprite,游戏精灵类,是游戏中最基本的元素,通常一个精灵都需要用一张图片来代表,可以完成多种操作,后续会介绍。

还要补充几点比较重要的:
(1).游戏的所有图片资源统一放在assets目录下,cocos2d认加载图片就是此目录
(2).锚点AnchorPoint和坐标Position都可以改变精灵的位置,坐标是在锚点的基础之上进行位置更改,锚点认为(0.5f,0.5f),即精灵的坐标在精灵的中间位置,如果想让精灵的坐标在精灵的左下角点,要把锚点设置为(0,0),CGPoint.getZero()返回的结果就是(0,0)
(3).如果想横屏不仅要设置cocos2d参数,还需要在AndroidManifest.xml文件添加这两行代码

  1. android:screenorientation="landscape"
  2. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

第四步:运行项目,因为游戏的帧率较高,建议游戏尽量在真机上测试,真机上的帧率会相对稳定,模拟器帧率较低会产生卡顿现象。
下图是在Android2.3.5系统的HTC-G10手机上测试截图,在Android4.0以上版本的真机测试同样通过,因为手机的版本分辨率不一致,所以在设置分辨率时请根据手机的真实分辨率来设置,在以后的讲解中会讲解到适配不同手机分辨率的技巧。

cocos2d-android引擎下载地址:http://download.csdn.net/detail/oktears/6022191

本项目的源码下载地址: http://download.csdn.net/detail/oktears/6023013

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


    本文实践自 RayWenderlich、Ali Hafizji 的文章《How To Create Dynamic Textures with CCRenderTexture in Cocos2D 2.X》,文中使用Cocos2D,我在这里使用Cocos2D-x 2.1.4进行学习和移植。在这篇文章,将会学习到如何创建实时纹理、如何用Gimp创建无缝拼接纹
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@163.com微信公众号:HopToad 欢迎转载,转载标注出处:http://blog.csdn.netotbaron/article/details/424343991.  软件准备 下载地址:http://cn.cocos2d-x.org/download 2.  简介2.1         引用C
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从Cocos2D-x官网上下载,进入网页http://www.cocos2d-x.org/download,点击Cocos2d-x以下的Download  v3.0,保存到自定义的文件夹2:从python官网上下载。进入网页https://www.python.org/downloads/,我当前下载的是3.4.0(当前最新
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发引擎,易学易用,支持多种智能移动平台。官网地址:http://cocos2d-x.org/当前版本:2.0    有很多的学习资料,在这里我只做为自己的笔记记录下来,错误之处还请指出。在VisualStudio2008平台的编译:1.下载当前稳
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《最强大脑》娱乐节目。将2048改造成一款挑战玩家对数字记忆的小游戏。邮箱:appdevzw@163.com微信公众号:HopToadAPK下载地址:http://download.csdn.net/detailotbaron/8446223源码下载地址:http://download.csdn.net/
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试以QtCreatorIDE来进行CMake构建。Cocos2d-x3.X地址:https://github.com/cocos2d/cocos2d-x1.打开QtCreator,菜单栏→"打开文件或项目...",打开cocos2d-x目录下的CMakeLists.txt文件;2.弹出CMake向导,如下图所示:设置
 下载地址:链接:https://pan.baidu.com/s/1IkQsMU6NoERAAQLcCUMcXQ提取码:p1pb下载完成后,解压进入build目录使用vs2013打开工程设置平台工具集,打开设置界面设置: 点击开始编译等待编译结束编译成功在build文件下会出现一个新文件夹Debug.win32,里面就是编译
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net前言上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实
1. 圆形音量button事实上作者的本意应该是叫做“电位计button”。可是我觉得它和我们的圆形音量button非常像,所以就这么叫它吧~先看效果:好了,不多解释,本篇到此为止。(旁白: 噗。就这样结束了?)啊才怪~我们来看看代码:[cpp] viewplaincopyprint?CCContro
原文链接:http://www.cnblogs.com/physwf/archive/2013/04/26/3043912.html为了进一步深入学习贯彻Cocos2d,我们将自己写一个场景类,但我们不会走的太远,凡是都要循序渐进,哪怕只前进一点点,那也至少是前进了,总比贪多嚼不烂一头雾水的好。在上一节中我们建