游戏引擎cocos2d-android使用大全
做手机游戏需要三个核心的类,即: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
- attachInView 开启线程
- runWithScene 运行场景
- 生命周期的方法 resume pause end
- setDisplayFPS 显示帧率
- setScreenSize 设置屏幕大小 自动屏幕适配
- 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
- setAnchorPoint 设置锚点
- setPosition 设置坐标
- setScale 设置缩放
- setFlipX(Y) 设置水平(垂直)翻转
- ccSprite.setOpacity(150); 设置不透明度 值越大越不透明
- 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
是 场景 图层 和精灵的基类
- ccp(float x,float y) 静态方法 创建一个点
- this.addChild(ccSprite);
- this.addChild(ccSprite, z); // 2 优先级
- 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);
复杂的动作
- CCSpawn 并行动作
- CCSequence 串行动作
- 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使用大全相关推荐
- 十五开源的Android(2D或3D)Android开发游戏引擎
Android游戏开发Android游戏引擎是非常有用的,这里是10个开源的Android(2D或3D)Android开发的游戏引擎. 1. Rokon:Android的开源2D游戏引擎 Rok ...
- Android游戏引擎汇总,架构师花费近一年时间整理出来的安卓核心知识
目前版本中还不支持Android x86 游戏例子:https://market.android.com/details?id=com.ArtInGames.AirAttackHDLite Cocos ...
- android游戏引擎汇总
随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要.而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎.然而就目前为止游戏 ...
- 记录一下八款开源 Android 游戏引擎
记录一下八款开源 Android 游戏引擎 虽然android学了点点,然后现在又没学了(我为啥这么没有恒心呢大哭).以后有时间还是要继续学android的,一定要啊!虽然现在没学android游戏编 ...
- Android游戏引擎汇总,JNI层MediaScanner的分析
支持分屏,网络多人玩家API,动态壁纸 以Java为主,包括x86中原生库的C++为辅的引擎 可免费获取源码 http://wiki.andengine.org/List_of_Apps_and_Ga ...
- Android安卓游戏引擎大搜罗
2019独角兽企业重金招聘Python工程师标准>>> 1.AndEngine 简介: AndEngine基于libGDX框架开发,使用OpenGL ES进行图形绘制.同时继承了BO ...
- 【iOS-cocos2d游戏引擎开发之一】搭建cocos2d游戏引擎环境,创建第一个HelloWorld!...
最近几天仔细了解了iOS游戏开发引擎,常用的cocos2d,Unity引擎,那么Unity是非免费的,而cocos2d则是免费开源的: 最后促使我选择cocos2d的原因有两点: 1.最重要的原因是它 ...
- Cocos2d手机游戏引擎介绍
Cocos2d 是一个 Python 用来开发2D 游戏和其他图形化交互应用的框架. 主要特性 界面流程控制: 非常容易地管理不同场景(scenes)之间的流程控制 精灵: 快速而方便的精灵 动作: ...
- Android 游戏引擎汇总
Android 游戏引擎汇总 1.AndEngine 简介:AndEngine 基于libGDX框架开发,使用OpenGL ES进行图形绘制.同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理 ...
最新文章
- minheight能继承吗_借父母名买房到底归谁?其他兄妹能继承吗?
- 信息安全 CIO最关注什么?
- ServiceModel 元数据实用工具 (Svcutil.exe)
- 2018android wear手表,谷歌正开发三款智能手表 Wear OS系统逐步脱离Android范畴
- 【转载】solr教程,值得刚接触搜索开发人员一看
- 华为鸿蒙不再孤,华为鸿蒙OS系统不再孤单!又一款国产系统启动内测:再掀国产替代化...
- 【转】How to install VNC server on ubuntu 14.04
- poythoncode-实战5--excel 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
- HDU 4919 打表找规律 java睑板 map 递归
- 掘金网无极ip代理软件IOS版如何下载安装?
- Java 安装包下载地址
- ubuntu 开机后 按键 鼠标不能用
- joomla速度优化_WordPress v Joomla:搜索引擎优化
- Substrate Tutorials:Start a Private Network (multi-node)
- 【IoT库】RFID基础知识第2期 · 历史发展
- 移植opencv到嵌入式arm详细过程
- CSS 实战: Switch 按钮开关(checkbox 实现)
- python中getattr()函数用法详解
- 连接9100端口,打印机实现远程连接打印
- AutoGluon包使用示例(表格、图像与多模态)