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

cocos2d游戏引擎

封装好的框架,可直接使用

cocos2d-android (用java编程)

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

场景:添加图层

图层:添加精灵

精灵

全屏:

application:

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

Activity:

android:screenOrientation="landscape"

图片放到assess目录下

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

CCDirector

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

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

CCScene

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

CCLayer

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

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

CCSprite

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

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

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

时间是秒

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

1.CCFiniteTimeAction 和时间相关的动作

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

2.CCFollow 跟随动作

3.CCRepeatForever 永不停止的循环

  1. CCRepeatForever forver=CCRepeatForever.action(sequence);

4.CCSpeed 和速度相关的动作

各种动作

moveTo和moveBy的区别:

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

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

CCSequence 串行动作

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

跳跃动作

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

旋转和缩放

>

缩放:

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


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

贝赛尔曲线运动

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

淡入淡出

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

加速度

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

颜色渐变

CCLabel,专门用来显示文字的精灵

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

闪硕

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

复杂的动作

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

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

游戏引擎cocos2d-android使用大全的更多相关文章

  1. Android游戏引擎总汇 原文出处:http://software.intel.com/en-us/blogs/2012/03/13/game-engines-for-android?page=1

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

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

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

  3. 教你如何选择Android游戏引擎

    我们进行Android游戏开发时选择游戏引擎是必须的,但是该如何选择呢?哪个Android游戏引擎更加适合自己呢?本文就提供了三个游戏引擎的对比说明,阐述了它们各自的特点,为大家选择引擎提供了参照. ...

  4. 为什么没有好用的Android游戏引擎?

    随着Android平台的不断发展,最近Android开发人员数量呈现出上升势头,就连以往较为冷门的游戏开发领域也涌现出不少生力军.然而,全新的问题正摆在了刚開始学习的人面前,非常多他们从未遇过的问题開 ...

  5. cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析

    (一) Android平台下: cocos2dx 版本3.2,先导入一个android工程,然后看下AndroidManifest.xml <application android:label= ...

  6. 八款常见的Android游戏引擎

    原文地址:http://bbs.csdn.net/topics/380203732 1.Angle  Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL  ...

  7. 或许您还不知道的八款Android开源游戏引擎

    很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏 ...

  8. Android 2D游戏引擎AndEngine配置环境

    Android 2D游戏引擎AndEngine配置环境 1.2  配置环境 在任何编程中,都需要一些软件或者硬件的支持.否则,没有硬件软件是不可能存在的,而想要编写对应语言的的程序,这需要对应语言库和 ...

  9. 向大家推荐个android的游戏引擎——cocos2d-x

    最近发现单单用android自带的功能函数来编写游戏,往往有很大的局限性,即耗时长,调试繁琐,没有一定的框架.所以博主发现了游戏引擎这个好东西,游戏引擎所拥有的架构和功能函数,使得游戏的编写更加得心应 ...

随机推荐

  1. nodejs和vue的那些事

    nodejs >1.旨在提供一种简单的构建可伸缩网络程序的方法 官方网站:http://nodejs.cn/api/ Node.js 是一个基于Chromev8 JavaScript 运行时建立 ...

  2. IOS开发-UIDynamic(物理仿真)简单使用

    UIDynamic是从IOS7开始引入的一种新技术,隶属于UIKit框架,我们可以认为是一种物理引擎能模拟和仿真现实生活中的物理现象,比如重力,弹性碰撞等. 可以让开发人员远离物理公式的情况下,实现一 ...

  3. ●CodeForces 518D Ilya and Escalator

    题链: http://codeforces.com/problemset/problem/518/D题解: 期望dp. 定义dp[t][i]表示在第t秒开始之前,已经有了i个人在电梯上,之后期望能有多 ...

  4. ●BZOJ 1444 [Jsoi2009]有趣的游戏

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1444题解.1: 概率dp,矩阵乘法,快速幂. 对所有串建立AC自动机, 那么如果在trie树 ...

  5. 51 nod 1515 明辨是非(并查集合并)

    1515 明辨是非题目来源: 原创基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以 ...

  6. hdu 5135(2014广州—状态dp)

    t题意:给你n条边,构造任意个三角形,一个三角形恰好只用3条边,每条边只能一次,求面积最大值 思路: 最开始想的是先排序从大到小取,但感觉并不怎么靠谱. 最多12条边,所以可以求出所有可能的三角形面积 ...

  7. Redis开启远程登录连接

    Redis 安装详见 http://www.cnblogs.com/zendwang/p/6560628.html 当前安装测试版本:Redis 3.2.8 默认安装完毕Redis只能本机访问 [ro ...

  8. monitoring with Prometheus

    Prometheus是一款开源的监控工具,支持k8s metrics的数据格式,同时也支持通过k8s api进行服务发现从而实现对自定义的metrics进行监控.下面通过一个示例来介绍如何将Prome ...

  9. hadoop hdfs 高可用

    单点故障: 如果某一个节点或服务出了问题,导致服务不可用 单点故障解决方式: 1.给容易出故障的地方安排备份 2.一主一备,要求同一时刻只能有一个对外提供服务 3.当active挂掉之后,standb ...

  10. JAVA数组练习

    1 package com.zhang.hello; public class TestArray { public static int NO1(double [] score){ int coun ...