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 ...
随机推荐
- SIAlertView
SIAlertView是AlertView的替代产品 的效果比较多 . 使用实例: SIAlertView *alertView = [[SIAlertView alloc] initWithTitl ...
- IQKeyboredManager使用
这个库是一个单例,它一旦生效,全项目任何界面都有效.让它生效的代码可以写在任意位置,我写在AppDelegate里. 1 2 3 4 5 6 7 8 9 10 - (BOOL)application: ...
- oracle 内置函数 least decode
在博客园的第一个博客,为什么叫第一个.... oracle 内置函数 east(1,2,3,4.....) 可以有多个值,最多几个?不知道欢迎补充 ,,,) from dual 这个函数返回是1,就是 ...
- POJ 2186 Popular Cows(Tarjan)
http://poj.org/problem?id=2186 题意 :给你n头牛,m对关系,每对关系由两个编号组成,u和v代表着u认为v是受欢迎的,如果1认为2是受欢迎的,2认为3是受欢迎的,那1认为 ...
- http://www.linuxidc.com/Linux/2015-02/114265.htm
http://www.linuxidc.com/Linux/2015-02/114265.htm
- DHTMLX 前端框架 建立你的一个应用程序 教程(七)-- 添加筛选功能
表格的过滤筛选 我们在每列第一行添加一个文本,用做数据的条件筛选. 我们还提供服务端的筛选 ,当有大量数据时 , 我们可以使用dhtmlxConnector 进行后台数据的筛选. 添加过滤器到表格列中 ...
- UDP模块(黑胶体)
UDP模块是采用PIP封装技术的U盘半成品模块,直接加上外壳,就是成品U盘. 它有以下特点: 防水.防尘.防震. 一体WAFER封装技术. 薄.轻.时尚. 产品装配方便.简单. 产品标准化,适合客户在 ...
- grep简单常用的语法介绍
说明: grep -n 关键字 查询的文档 ->-n表示打印行号 grep -c 关键字 查询的文档1 查询的文档2 ->-c表示输出匹配行的数目,而不是输出匹配的行. grep -rn ...
- 判断微信内置浏览器的UserAgent
要区分用户是通过"微信内置浏览器"还是"原生浏览器"打开的WebApp, 可以通过navigator.userAgent来进行判断. 以下是对各种平台上微信内置 ...
- WCF - Versus Web Service
There are some major differences that exist between WCF and a Web service which are listed below. 这里 ...