做手机游戏需要三个核心的类,即:SurfaceView,SurfaceHolder,Thread。帧数要在30帧左右是最好的。

cocos2d游戏引擎

封装好的框架,可直接使用
cocos2d-android (用java编程)

导演:控制场景的切换,控制开始和暂停
场景:添加图层

图层:添加精灵

精灵

全屏:
application:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

Activity:
android:screenOrientation="landscape"

图片放到assess目录下

    CCGLSurfaceView surfaceView=new CCGLSurfaceView(this);  setContentView(surfaceView);director=CCDirector.sharedDirector();//程序只能有一个导演director.attachInView(surfaceView); //开启线程CCScene ccScene=CCScene.node();//为了api和cocos-phone一致ccScene.addChild(new FirstLayer());director.runWithScene(ccScene);

CCDirector

  1. attachInView 开启线程
  2. runWithScene 运行场景
  3. 生命周期的方法 resume pause end
  4. setDisplayFPS 显示帧率
  5. setScreenSize 设置屏幕大小 自动屏幕适配
  6. setDeviceOrientation 设置屏幕的方向

    director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);director.setDisplayFPS(true);  //是否显示帧率director.setAnimationInterval(1.0f/30); //锁定帧率,只能向下锁定director.setScreenSize(480, 320); //设置屏幕的大小,自动屏幕适配,必须在开启线程之后调用

CCScene

目前该类没有什么具体的功能,它只是作为一个项目中需要展示内容的根节点存在。

CCLayer

安卓的坐标原点是在左上角,而cocos2d坐标原点在左下角

//按下的事件
@Override
public boolean ccTouchesBegan(MotionEvent event) {
//先把android坐标系中的点转换为cocos2d坐标系中的点CGPoint converTouchToNodeSpace=this.convertTouchToNodeSpace(event);//  System.out.println("我被按了,呜呜呜!");CGRect boundingBox=ccSprite.getBoundingBox();  //获取精灵的矩形event.getRawX();//判断点是否在矩形之中boolean containsPoint=CGRect.containsPoint(boundingBox, converTouchToNodeSpace);if(containsPoint){ccSprite.setScale(ccSprite.getScale()+0.2);}else{ccSprite.setScale(ccSprite.getScale()-0.2);}return super.ccTouchesBegan(event);
}

CCSprite

  1. setAnchorPoint 设置锚点
  2. setPosition 设置坐标
  3. setScale 设置缩放
  4. setFlipX(Y) 设置水平(垂直)翻转
  5. ccSprite.setOpacity(150); 设置不透明度 值越大越不透明
  6. setVisible , 设置是否可见 true可见

  ccSprite = CCSprite.sprite("z_1_attack_01.png");ccSprite.setAnchorPoint(0,0);// 设置锚点ccSprite.setPosition(100, 100);//设置坐标ccSprite.setScale(1); // 设置缩放//ccSprite.setFlipY(true);// X水平翻转  Y垂直翻转//ccSprite.setOpacity(0);//设置不透明度 值越大 越不透明  0-255ccSprite.setVisible(true);// 设置不可显示// 把精灵添加到图层上

CCNode

是 场景 图层 和精灵的基类

  1. ccp(float x,float y) 静态方法 创建一个点
  2. this.addChild(ccSprite);
  3. this.addChild(ccSprite, z); // 2 优先级
  4. this.addChild(ccSprite, 1, 10);// 参数3 标签

动作的处理,CCAction

时间是秒

CCMoveTo ccMoveTo=CCMoveTo.action(2,CCNode.ccp(200, 0));//参数1;移动的时间,单位秒,参数2:移动的距离

1.CCFiniteTimeAction 和时间相关的动作

CCInstantAction   瞬时动作    闪现
CCIntervalAction  延迟动作  疾跑

2.CCFollow 跟随动作
3.CCRepeatForever 永不停止的循环

    CCRepeatForever forver=CCRepeatForever.action(sequence);

4.CCSpeed 和速度相关的动作

各种动作

moveTo和moveBy的区别:

1.to 移动到指定目的地;2.by 移动的坐标的改变

1 to没有相反的动作;2.by 有相反动作

CCSequence 串行动作

CCMoveBy ccMoveBy=CCMoveBy.action(2,CCNode.ccp(200, 0));//参数1;移动的时间,单位秒,参数2:移动的距离CCMoveBy reverse=ccMoveBy.reverse();CCSequence sequence=CCSequence.actions(ccMoveBy,reverse);//串行动作,sprite.runAction(sequence);

跳跃动作

    CCJumpBy ccJumpBy=CCJumpBy.action(2,ccp(200,200),50,1);sprite.runAction(ccJumpBy);

旋转和缩放
>
缩放:
CCScaleBy ccScaleBy=CCScaleBy.action(1,0.5f);//基于锚点进行缩放


旋转:CCRotateBy和CCRotateTo都可以,同时CCRotateTo更实用(翻转120度)

贝赛尔曲线运动

CCBezierConfig cc=new CCBezierConfig();cc.controlPoint_1=ccp(0,0);cc.controlPoint_2=ccp(100,100);cc.endPosition=ccp(200,0);CCBezierBy bezierBy=CCBezierBy.action(2,cc);getSprite().runAction(bezierBy);

淡入淡出

CCFadeIn  fadeIn=CCFadeIn.action(10);getSprite().runAction(fadeIn);

加速度

CCMoveTo cmt=CCMoveTo.action(10,CCNode.ccp(200,0));CCEaseOut easeOut=CCEaseOut.action(cmt,10);//让移动按照一定加速度去移动getSprite().runAction(easeOut);

颜色渐变
CCLabel,专门用来显示文字的精灵

CCLabel label=CCLabel.labelWithString("指令汇最棒", "hkbd.ttf", 24);label.setColor(ccc3(50,0,255));label.setPosdition(200,200);this.adChild(label);ccColor3B c=ccc3(100,255,-100);CCTintBy cb=CCTintBy.action(1, c);CCTintBy reverse=cb.reverse();CCSequence seq=CCSequence.actions(cb, reverse);CCRepeatForever forver=CCRepeatForever.action(seq);label.runAction(forver);

闪硕

CCBlink blink=CCBlink.action(3, 3);getSprite().runAction(blink);

复杂的动作

  1. CCSpawn 并行动作
  2. CCSequence 串行动作
  3. CCRepeatForever 永不停止的循环

private void JumpBy() {// 1 时间  单位秒 2 目的地   3 高出的高度  4 跳跃的次数CCJumpBy ccJumpBy=CCJumpBy.action(4, ccp(200, 100), 100, 2);CCRotateBy ccRotateBy=CCRotateBy.action(2, 360);// 并行动作CCSpawn ccSpawn=CCSpawn.actions(ccJumpBy, ccRotateBy);//并行起来了   跳跃的过程中伴随着旋转//CCJumpBy reverse = ccJumpBy.reverse();CCSequence sequence=CCSequence.actions(ccSpawn, ccSpawn.reverse());// 跳上去 跳回来(伴随着旋转) CCRepeatForever forever=CCRepeatForever.action(sequence);// 让串行动作 永不停止循环了CCSprite sprite = getSprite();sprite.setAnchorPoint(0.5f, 0.5f);  sprite.setPosition(50, 50);sprite.runAction(forever);}

游戏引擎cocos2d-android使用大全相关推荐

  1. 十五开源的Andr​​oid(2D或3D)Android开发游戏引擎

    Android游戏开发Android游戏引擎是非常有用的,这里是10个开源的Andr​​oid(2D或3D)Android开发的游戏引擎. 1.  Rokon:Android的开源2D游戏引擎 Rok ...

  2. Android游戏引擎汇总,架构师花费近一年时间整理出来的安卓核心知识

    目前版本中还不支持Android x86 游戏例子:https://market.android.com/details?id=com.ArtInGames.AirAttackHDLite Cocos ...

  3. android游戏引擎汇总

    随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要.而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎.然而就目前为止游戏 ...

  4. 记录一下八款开源 Android 游戏引擎

    记录一下八款开源 Android 游戏引擎 虽然android学了点点,然后现在又没学了(我为啥这么没有恒心呢大哭).以后有时间还是要继续学android的,一定要啊!虽然现在没学android游戏编 ...

  5. Android游戏引擎汇总,JNI层MediaScanner的分析

    支持分屏,网络多人玩家API,动态壁纸 以Java为主,包括x86中原生库的C++为辅的引擎 可免费获取源码 http://wiki.andengine.org/List_of_Apps_and_Ga ...

  6. Android安卓游戏引擎大搜罗

    2019独角兽企业重金招聘Python工程师标准>>> 1.AndEngine 简介: AndEngine基于libGDX框架开发,使用OpenGL ES进行图形绘制.同时继承了BO ...

  7. 【iOS-cocos2d游戏引擎开发之一】搭建cocos2d游戏引擎环境,创建第一个HelloWorld!...

    最近几天仔细了解了iOS游戏开发引擎,常用的cocos2d,Unity引擎,那么Unity是非免费的,而cocos2d则是免费开源的: 最后促使我选择cocos2d的原因有两点: 1.最重要的原因是它 ...

  8. Cocos2d手机游戏引擎介绍

    Cocos2d 是一个 Python 用来开发2D 游戏和其他图形化交互应用的框架. 主要特性 界面流程控制: 非常容易地管理不同场景(scenes)之间的流程控制 精灵: 快速而方便的精灵 动作: ...

  9. Android 游戏引擎汇总

    Android 游戏引擎汇总 1.AndEngine 简介:AndEngine 基于libGDX框架开发,使用OpenGL ES进行图形绘制.同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理 ...

最新文章

  1. minheight能继承吗_借父母名买房到底归谁?其他兄妹能继承吗?
  2. 信息安全 CIO最关注什么?
  3. ServiceModel 元数据实用工具 (Svcutil.exe)
  4. 2018android wear手表,谷歌正开发三款智能手表 Wear OS系统逐步脱离Android范畴
  5. 【转载】solr教程,值得刚接触搜索开发人员一看
  6. 华为鸿蒙不再孤,华为鸿蒙OS系统不再孤单!又一款国产系统启动内测:再掀国产替代化...
  7. 【转】How to install VNC server on ubuntu 14.04
  8. poythoncode-实战5--excel 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
  9. HDU 4919 打表找规律 java睑板 map 递归
  10. 掘金网无极ip代理软件IOS版如何下载安装?
  11. Java 安装包下载地址
  12. ubuntu 开机后 按键 鼠标不能用
  13. joomla速度优化_WordPress v Joomla:搜索引擎优化
  14. Substrate Tutorials:Start a Private Network (multi-node)
  15. 【IoT库】RFID基础知识第2期 · 历史发展
  16. 移植opencv到嵌入式arm详细过程
  17. CSS 实战: Switch 按钮开关(checkbox 实现)
  18. python中getattr()函数用法详解
  19. 连接9100端口,打印机实现远程连接打印
  20. AutoGluon包使用示例(表格、图像与多模态)

热门文章

  1. 内容拾遗之字符串与数据结构
  2. 02数据结构与算法分析之---数据的两种结构
  3. 【代码笔记】iOS-下拉选项cell
  4. php执行一条insert插入两条数据其中一条乱码
  5. 浅析SQL Server 2005中的主动式通知机制
  6. android应用退出后广播无效,关闭应用程序后,保持广播接收器运行
  7. TEA、XTEA、XXTEA加密解密算法
  8. 树莓派超声波模块测距
  9. 安卓APP_ 控件(10)—— ListView可上下滑动的列表(重要)与ViewHolder优化
  10. h5是什么 www.php.cn,html meta标签的作用是什么?