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 ...
随机推荐
- Dev-C++之开启装逼效果
Dev-C++是个不错的C++IDE——在10年前,它是很不错,在现在,它是个以界面丑陋和调试像吃粑粑这两点著称,如下图.
- linux nginx安装
操作系统centOS7安装nginx: 1.如果centOS7中未安装编译器,先安装gcc编译模块 yum install gcc gcc-c++ ncurses-devel perl 2.安装ngi ...
- Ubuntu下与菜单和图标相关的几个文件夹
转自UBUNTU下与菜单和图标相关的几个文件夹 /usr/share/icons 系统图标文件夹 /usr/share/applications 系统菜单文件夹,要在左上角的应用程序菜单中添加一项 ...
- Unity3D中的第三人称镜头的脚本控制
原地址:http://blog.csdn.net/mobanchengshuang/article/details/27591271 好久没有敲Blog了,谢谢大家的留言.关注.私信等支持,但是我好像 ...
- CF192div2-330B - Road Construction
题意:给定n个城市并建造马路是的两两到达,且距离不能超过2 因为0<=m<n/2,所以必然存在某个城市是无限制的,那就可以以这个无限制的城市为中心建造.... 只要想通了真尼玛简单.... ...
- RTMP
实时消息传输协议 RTMP(Real Time Messaging Protocol) http://blog.csdn.net/defonds/article/details/17403225 译序 ...
- Autodesk 2014全套密钥
AUTODESK 2014通用安装序列号: 666-69696969 667-98989898 400-45454545 066-66666666 AUTODESK 2014全系列产品密钥 001F1 ...
- vnc执行,报xauth could not run
/usr/bin/gnome-terminal [INFO-10%]生成随机密码 [INFO-20%]生成密码文件 [INFO-30%]完成初始化,准备打开连接 Error: could not ru ...
- wzplayer for android V1.6.1 (支持音视频加密播放)
1.更新 2013-11-25: 1.6.1 修复1.6.0版本对rk版本的支持. 以往版本: 1.6.0 1)1.6.0修改了所有默认音频渲染使用AudioTrack输出,这样只要不播放视频,能支持 ...
- poi大数据导入解决方法
This one comes up quite a lot, but often the reason isn't what you might initially think. So, the fi ...