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 ...
随机推荐
- 一步步学习NHibernate(3)——NHibernate增删改查
请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们配置了以下NHibernate的运行环境, 并介绍了NHibernate的中两个非常中重要的接口"I ...
- Python之创建tuple
tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里同学的名称,用tuple表示如 ...
- c++ 内存泄露的检查
对于c++的内存泄露检测,除了我们自己手动检查以外,还可以使用c++中的函数来帮助我们检测, 如下代码: #include "stdafx.h" #include <stri ...
- 10个基于 Ruby on Rails 构建的顶级站点
本文系国内 ITOM 行业领军企业 OneAPM 工程师翻译整理自 Raviraj Hegde 的文章 Top Sites Built with Ruby on Rails. 就其本身而言,Ruby ...
- android TabActivity的局限性 是否还有存在的必要性
TabActivity的局限性 是否还有存在的必要性 其实谷歌有此举动,我们也应该早就想到了,为什么会这么说呢?那就要从TabActivity的原理开始说起了. 做个假定先: 比如我们最外面的Act ...
- IDEA 整合Junit实现自动生成测试代码
1.安装插件 junit generator 重启IDEA,完成安装. 2. 选中需要测试的方法,按alt + insert 即可自动生成测试类\方法 3. 设置
- UVA 10608 Friends
题目大意:共有n个人,m对人为已知的朋友关系,而且这种关系具有传递性,也就是A与B,B与C是朋友,可以确定A与C是朋友,求一个人数最多的朋友团体. bfs就可以了,遇到未访问的结点,加入队列并且朋人数 ...
- easyui源码翻译1.32--Droppable(放置)
前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...
- Qt for PC,Qt for iOS,Qt for Android (居士的博客)
http://blog.csdn.net/Esonpo/article/details/38081607 http://blog.csdn.net/Esonpo/article/details/380 ...
- 【HDOJ】1356 The Balance
扩展欧几里得的应用. /* 1356 */ #include <iostream> #include <sstream> #include <string> #in ...