CosCos2D-android 代码总结
CosCos2D-android 学习总结
资料:
Android游戏开发视频教程
直接上代码:
MainActivity中Cocos常规写法:
//cocos2d 会把图形绘制在 view 上
private CCGLSurfaceView view = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); view = new CCGLSurfaceView(this);
//得到CCDirector 一个应用程序只有一个
CCDirector director = CCDirector.sharedDirector();
//设置应用程序相关的属性 设置游戏程序中所使用的View对象
director.attachInView(view);
//设置游戏是否显示FPS值,看应用程序是否流畅
director.setDisplayFPS(true);
//设置游戏FPS值,渲染一帧的时间
director.setAnimationInterval(1/30); //生成一个游戏场景对象
CCScene scene =CCScene.node();
//生成布景层对象
GameLayer gameLayer = new GameLayer(); //将布景层对象添加到游戏场景中
scene.addChild(gameLayer);
//运行游戏场景
director.runWithScene(scene);
setContentView(view);
继承了CCLayer的图层类的基本写法:
public class GameLayer extends CCLayer {
// 声明一个精灵对象
CCSprite player;
public GameLayer() {
// 初始化精灵对象
player = CCSprite.sprite("tank_a.png");
// 设置精灵位置的两种方法
/*
* //方法一: 设置精灵对象的位置 player.setPosition(100, 100);
*/
// 方法二:设置对象 常用于表示坐标,或者是表示向量
CGPoint point = CGPoint.ccp(100, 100);
player.setPosition(point);
this.addChild(player);
//生成一个JumpTo,该对象表示一个跳跃的动作
CGPoint target = CGPoint.ccp(400, 100);
CCJumpTo jumpTo = CCJumpTo.action(3,target,200,10);
player.runAction(jumpTo);
}
}
继承了CCLayer的图层类的几个动作:精灵移动 旋转 缩放到指定倍数 闪烁 隐藏(CCHide) 显示
// 初始化精灵对象
player = CCSprite.sprite("tank_a.png");
this.addChild(player);
player.setPosition(100, 100);
/*** 例子一 :精灵翻转 ***/
// 1.生成 动作对象
/*
CCFlipX flipX = CCFlipX.action(true); CCFlipY flipY =
CCFlipY.action(true); CCHide hide = CCHide.action();
*/
// 2.执行精灵对象执行动作对象
/*
player.runAction(flipX); player.runAction(flipY);
player.runAction(hide);
*/ /*** 基础延时动作 CCMoveTo和CCScaleTo ***/ /*** 例子二 :精灵移动 ***/
/*
CGPoint mPoint = CGPoint.ccp(400,400); CCMoveTo moveTo =
CCMoveTo.action(3, mPoint); player.runAction(moveTo);
*/ /*** 例子三:精灵旋转 ***/
/*
CCRotateTo rotateTo = CCRotateTo.action(3,-90);
player.runAction(rotateTo);
*/ /*** 例子四:缩放到指定倍数 ***/
/*** 第一个参数为:倍数,x:y是缩放比例 ***/
/*CCScaleTo scale = CCScaleTo.action(5, 10, 4);
player.runAction(scale);*/ /*** 例子五:闪烁CCBink ***/
/*CCBlink bink =CCBlink.action(10, 10);
player.runAction(bink);*/ /*** 例子六:CCShow ***/
/*CCShow show = CCShow.action();
player.runAction(show);*/
}
继承了CCLayer的图层类的动作执行方式:动作依次执行 多个动作同时执行 以及精灵清理技巧
// 初始化精灵对象
playerA = CCSprite.sprite("tank_a.png");
playerB = CCSprite.sprite("tank_b.png"); this.addChild(playerA);
this.addChild(playerB); CGPoint point = CGPoint.ccp(100,100);
playerA.setPosition(point);
playerB.setPosition(point); CGPoint detaPoint = CGPoint.ccp(300, 300); CCMoveTo moveTo = CCMoveTo.action(2, detaPoint);
CCRotateTo rotateTo = CCRotateTo.action(2,90);
CCScaleTo scaleTo = CCScaleTo.action(2, 2); /*** 例一:多少动作依次执行 ***/
/*CCSequence seq = CCSequence.actions(moveTo, rotateTo,scaleTo);
playerA.runAction(seq);*/ /*** 例二:多个动作同时执行 ***/
/*CCSpawn spawn = CCSpawn.actions(moveTo, rotateTo,scaleTo);
playerA.runAction(spawn);*/ /*** 例三:常用于清理精灵,与CCSequence联用 ***/
/*CCCallFuncN func = CCCallFuncN.action(this, "onActionFinished");
CCSequence seq = CCSequence.actions(moveTo, func);
playerA.runAction(seq);*/ /*** 例四:CCFollow :***/ }
public void onActionFinished(Object sender)
{
System.out.println("onActionFinished called");
}
继承了CCLayer的图层类的向量的加、减、乘:
// 声明一个精灵对象
CCSprite playerA;
CCSprite playerB;
public GameLayer() {
// 初始化精灵对象
playerA = CCSprite.sprite("tank_a.png");
playerB = CCSprite.sprite("tank_b.png"); this.addChild(playerA);
this.addChild(playerB); CGPoint point = CGPoint.ccp(0, 400);
playerA.setPosition(point);
playerB.setPosition(point); CGPoint detaPoint = CGPoint.ccp(200, 300);
/*//向量加法
CGPoint targetPoint1 = CGPoint.ccpAdd(point, detaPoint);
playerB.setPosition(targetPoint1); //向量减法
CGPoint targetPoint2 = CGPoint.ccpSub(point, detaPoint);
playerB.setPosition(targetPoint2); //向量乘法
CGPoint targetPoint3 = CGPoint.ccpMult(point, (float) 1.3);
playerB.setPosition(targetPoint3); //计算单位向量
CGPoint targetPoint4 = CGPoint.ccpNormalize(point);
playerB.setPosition(targetPoint4);*/ //MoveBy 第二个参数为增量
/*CCMoveBy moveBy = CCMoveBy.action(3,detaPoint);
playerA.runAction(moveBy);*/ //JumpBy 第二个参数为增量
/*CCJumpBy jumpBy = CCJumpBy.action(3, detaPoint, 200, 3);
playerA.runAction(jumpBy);*/
}
继承了CCLayer的图层类的 精灵淡入(颜色变化到指定值、颜色变化到相对值) 精灵淡出 重复指定动作N次数 指定动作,重复次数无限
// 声明一个精灵对象
CCSprite playerA;
CCSprite playerB;
public GameLayer_Animale() {
// 初始化精灵对象
playerA = CCSprite.sprite("tank_a.png");
this.addChild(playerA); CGPoint point = CGPoint.ccp(100,300);
playerA.setPosition(point); //使精灵淡入
//ccColor3B color3b = ccColor3B.ccc3(0,-300,-300);
//例一:使精灵的颜色变化到指定值
/*CCTintTo tintTo = CCTintTo.action(3, color3b);
playerA.runAction(tintTo);*/ //例二:使精灵的颜色变化到相对值:在当前颜色上加值
/*CCTintBy tintBy = CCTintBy.action(3,color3b);
playerA.runAction(tintBy);*/ //例三:使精灵淡入CCFadenIn
/*CCFadeIn fadeIn = CCFadeIn.action(3);
playerA.runAction(fadeIn);*/ //例三:使精灵淡出CCFadenOut
/* CCFadeOut fadeOut = CCFadeOut.action(3);
playerA.runAction(fadeOut);*/ //例四:
/*CGPoint targetPoint1 = CGPoint.ccp(400, 300);
CGPoint targetPoint2 = CGPoint.ccp(200,300);
CCMoveTo moveTo1 = CCMoveTo.action(2,targetPoint1);
CCMoveTo moveTo2 = CCMoveTo.action(2,targetPoint2);
CCSequence seq = CCSequence.actions(moveTo1,moveTo2);*/
//用一重复指定动作,重复次数
/*CCRepeat repeat = CCRepeat.action(seq, 5);
playerA.runAction(repeat);*/ //用一重复指定动作,重复次数无限
/*CCRepeatForever repeatForever = CCRepeatForever.action(seq);
playerA.runAction(repeatForever);*/
继承了CCLayer的图层类的 触摸事件
// 声明一个精灵对象
CCSprite playerA; //当用户开始触摸屏幕时,执行此方法
@Override
public boolean ccTouchesBegan(MotionEvent event) {
// TODO Auto-generated method stub
System.out.println("began");
return super.ccTouchesBegan(event);
} //当用户手指离开时,执行该方法
@Override
public boolean ccTouchesEnded(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX();
float y = event.getY(); CGPoint p1 = CGPoint.ccp(x, y); //左上角的坐标,转换成右下角的坐标
CGPoint p3=CCDirector.sharedDirector().convertToGL(p1); System.out.println("转换后:"+p3.x+","+p3.y);
System.out.println("转换前:("+x+","+y+") = end");
return super.ccTouchesEnded(event);
} //当用户在屏幕上移动时,执行该方法
@Override
public boolean ccTouchesMoved(MotionEvent event) {
// TODO Auto-generated method stub
System.out.println("move");
return super.ccTouchesMoved(event);
} //接收触摸事件,首先必须对当前图层进行设置
public GamerLayer_Touch()
{
//对当前图层进行设置处理触摸事件
this.setIsTouchEnabled(true);
playerA = CCSprite.sprite("tank_a.png"); this.addChild(playerA);
}
继承了CCLayer的图层类的 按时间执行指定函数
/**
* @author FDAorangebook 日期:2014-4-11 功能:
*/
public class GameLayer_Time extends CCLayer {
public GameLayer_Time() {
this.setIsTouchEnabled(true);
// 调用schedule方法,传输函数名,以及间隔时间
this.schedule("fun", 2);
} public void fun(float delta) {
System.out.println("fun is called"+delta);
} /* (non-Javadoc)
* @see org.cocos2d.layers.CCLayer#ccTouchesBegan(android.view.MotionEvent)
*/
@Override
public boolean ccTouchesBegan(MotionEvent event) {
// TODO Auto-generated method stub
this.unschedule("fun");
System.out.println("unschedule");
return super.ccTouchesBegan(event);
} }
注:其中图片资源要放在这此只是基本的用法,其它的用法 还要看源码。
要源示例代码的请顶起!
CosCos2D-android 代码总结的更多相关文章
- 下载最新Android代码的方法
之前我是去Android官方网站下载最新Android代码,但是这种方法需要FQ,而且有时候FQ又不太方便,今天我发现一个不错的网站,是清华大学搞的,跟Android官方的代码基本保持同步,而且下载方 ...
- Android代码混淆官方实现方法
首先查看一下 “project.properties” 这个文件: # This file is automatically generated by Android Tools.# Do not m ...
- 编写高效的Android代码
编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一 ...
- Android代码内存优化建议-OnTrimMemory优化
原文 http://androidperformance.com/2015/07/20/Android代码内存优化建议-OnTrimMemory优化/ OnTrimMemory 回调是 Androi ...
- Android代码混淆和项目宣布步骤记录器
原本放在一起Android项目与发布的文件相混淆.我突然想到,为什么不写博客,分享.有这篇文章的情况下,. Android代码混淆及项目公布步骤记录 一.清理代码中的调试信息,如Log.System. ...
- Android 代码混淆 混淆方案
本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路.请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地 ...
- 【Android】Android 代码判断当前设备是否为模拟器
[Android]Android 代码判断当前设备是否为模拟器 方法比较简单,直接粘贴代码 //判断当前设备是否是模拟器.如果返回TRUE,则当前是模拟器,不是返回FALSE public stati ...
- 【Android】Android 代码判断是否获取ROOT权限(二)
[Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代码 /** * 判断当前手机是否有ROOT权限 * @return */ public boolean isRo ...
- 【Android】Android 代码判断是否获取ROOT权限(一)
[Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代码 public synchronized boolean getRootAhth() { Process pr ...
- [转]Android 代码自动提示功能
源地址http://blog.sina.com.cn/s/blog_7dbac12501019mbh.html 或者http://blog.csdn.net/longvslove/article/de ...
随机推荐
- 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组
一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...
- Windows常用CMD命令
远程桌面:mstsc 记事本:notepad 写字板:write 计算器:calc IIS重启:iisreset 60秒倒计时关机命令:tsshutdn 15秒关机:rononc ...
- Unity3d Shader开发(三)Pass(Color, Material, Lighting )
材质和灯光参数被用于控制内置顶点光照.顶点光照是Direct3D/OpenGL标准的按每顶点计算的光照模型.光照打开时,光照受材质块,颜色材质和平行高光命令的影响. 每像素光照常被实现为自定义顶点/片 ...
- 记录android学习、开发过程温故知新
记录android学习.开发过程温故知新
- SQL Server 索引结构及其使用(一)
转载:SQL Server 索引结构及其使用(一) 作者:freedk 一.深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clus ...
- http://www.itpub.net/thread-1778530-1-1.html
http://www.itpub.net/thread-1778530-1-1.html
- leetcode面试准备:Kth Largest Element in an Array
leetcode面试准备:Kth Largest Element in an Array 1 题目 Find the kth largest element in an unsorted array. ...
- HDU 4009 不定根最小树形图
讲一下建图过程,首先建立一个超级源点S,对于这个源点,向每个HOUSE连一条有向边,权值为该HOUSE建立WELL的费用,即高度*X. 然后每个可以连边的WELL之间,费用为曼哈顿距离*Y,然后考虑两 ...
- 【HDOJ】1504 Disk Tree
文件可以重名.先按字典序将路径排序,再过滤掉公共前缀.其中的问题是'\'的ASCII比[A-Z0-9]大,将它替换为空格.否则字典序有问题. /* 1504 */ #include <iostr ...
- 校园网之MentoHUST安装与使用
作用:MentoHUST可以解决校园网锐捷客户端与Windows的兼容性问题,可以解决安装虚拟机之后虚拟机网卡与本地网卡冲突的问题,可以做到愉快的用校园网,并可以愉快的用校园网开Wifi给自己或者小伙 ...