CosCos2D-android 学习总结

资料:

  Android游戏开发视频教程

  Cocos-android-1代码包下载

直接上代码:

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 代码总结的更多相关文章

  1. 下载最新Android代码的方法

    之前我是去Android官方网站下载最新Android代码,但是这种方法需要FQ,而且有时候FQ又不太方便,今天我发现一个不错的网站,是清华大学搞的,跟Android官方的代码基本保持同步,而且下载方 ...

  2. Android代码混淆官方实现方法

    首先查看一下 “project.properties” 这个文件: # This file is automatically generated by Android Tools.# Do not m ...

  3. 编写高效的Android代码

    编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一 ...

  4. Android代码内存优化建议-OnTrimMemory优化

    原文  http://androidperformance.com/2015/07/20/Android代码内存优化建议-OnTrimMemory优化/ OnTrimMemory 回调是 Androi ...

  5. Android代码混淆和项目宣布步骤记录器

    原本放在一起Android项目与发布的文件相混淆.我突然想到,为什么不写博客,分享.有这篇文章的情况下,. Android代码混淆及项目公布步骤记录 一.清理代码中的调试信息,如Log.System. ...

  6. Android 代码混淆 混淆方案

    本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路.请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地 ...

  7. 【Android】Android 代码判断当前设备是否为模拟器

    [Android]Android 代码判断当前设备是否为模拟器 方法比较简单,直接粘贴代码 //判断当前设备是否是模拟器.如果返回TRUE,则当前是模拟器,不是返回FALSE public stati ...

  8. 【Android】Android 代码判断是否获取ROOT权限(二)

    [Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代码 /** * 判断当前手机是否有ROOT权限 * @return */ public boolean isRo ...

  9. 【Android】Android 代码判断是否获取ROOT权限(一)

    [Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代码 public synchronized boolean getRootAhth() { Process pr ...

  10. [转]Android 代码自动提示功能

    源地址http://blog.sina.com.cn/s/blog_7dbac12501019mbh.html 或者http://blog.csdn.net/longvslove/article/de ...

随机推荐

  1. 一步步学习NHibernate(3)——NHibernate增删改查

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们配置了以下NHibernate的运行环境, 并介绍了NHibernate的中两个非常中重要的接口"I ...

  2. Python之创建tuple

    tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里同学的名称,用tuple表示如 ...

  3. c++ 内存泄露的检查

    对于c++的内存泄露检测,除了我们自己手动检查以外,还可以使用c++中的函数来帮助我们检测, 如下代码: #include "stdafx.h" #include <stri ...

  4. 10个基于 Ruby on Rails 构建的顶级站点

    本文系国内 ITOM 行业领军企业 OneAPM 工程师翻译整理自 Raviraj Hegde 的文章 Top Sites Built with Ruby on Rails. 就其本身而言,Ruby ...

  5. android TabActivity的局限性 是否还有存在的必要性

     TabActivity的局限性 是否还有存在的必要性 其实谷歌有此举动,我们也应该早就想到了,为什么会这么说呢?那就要从TabActivity的原理开始说起了. 做个假定先: 比如我们最外面的Act ...

  6. IDEA 整合Junit实现自动生成测试代码

    1.安装插件 junit generator 重启IDEA,完成安装. 2. 选中需要测试的方法,按alt + insert 即可自动生成测试类\方法 3. 设置

  7. UVA 10608 Friends

    题目大意:共有n个人,m对人为已知的朋友关系,而且这种关系具有传递性,也就是A与B,B与C是朋友,可以确定A与C是朋友,求一个人数最多的朋友团体. bfs就可以了,遇到未访问的结点,加入队列并且朋人数 ...

  8. easyui源码翻译1.32--Droppable(放置)

    前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...

  9. 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 ...

  10. 【HDOJ】1356 The Balance

    扩展欧几里得的应用. /* 1356 */ #include <iostream> #include <sstream> #include <string> #in ...