在最新的cocos集成环境中,CocosStudio已经集成到cocos中了,至于界面的制作和编辑器的基本使用在cocos官网有详细教程,

这里就不细说,资源下载和详情请参看官网教程:http://cn.cocos2d-x.org/tutorial/show?id=1650

接下来就是使用cocos2d-x3.4完成接下来的代码操作与打包,一步一步来。

1、cocos2d-x3.4环境问题,cocos2d-x3.4对NDK的要求是最新的,这里我使用的是r10d。如果使用eclipse进行打包,需要

eclipse版本在23以上,这里我是用的是2014年7月2号的版本(Eclipse IDE for Android Developers 23.0.2.1259578 )。

相应的SDKcocos2d-x3.4项目默认是20,(2014年7月2号的版本的ADT里面集成的SDK就是20)请自行下载。另外Python

和java请自行安装,并且配置好环境变量。建议新手直接下载cocosframeworks3.4进行安装,这样cocos相关的环境变量会自

动配置好。

2、使用eclipse进行android编译的还有一个重要的参数需要配置:NDK_MODULE_PATH,我嫌麻烦,直接配置在环境变量里。

3.4的这三个目录分别是cocos引擎根目录,external目录,和cocos目录,例如我的配置:

FrameWorks\frameworks\cocos2d-x-3.4rc1;D:\CocosFrameWorks\frameworks\cocos2d-x-3.4rc1\external;D:\CocosFrameWorks\frameworks\cocos2d-x-3.4rc1\cocos

3、接下来就是工程的创建和代码编写了,这里我使用c++开发,编辑器使用vs2013update4。

首先打开命令行窗口,使用cocos命令行创建工程:cocos new KissBear -p com.KissBear.cn -l cpp -d D:\cocosProjects

解释下命令参数:new是新建工程命令,-p是包名称,-l是开发语言,-d是工程存放目录

4、将cocosStudio导出的资源文件全部拷贝到工程目录下的Resources目录下。嗯,先看下cocosStudio的效果图:

 
每个窗口里面的小熊是不可见的,这样我们只需要在代码里面实现随机出现就可以了。
5、接下来,分析下具体的逻辑实现,第一步:加载出来界面,然后九个窗子里的小熊随机出现,如果触摸判断到触点在小熊上面,
那么分数往上加,很简单的。
6、话不多说,分析下代码需求开整。首先我们需要一个函数用来产生一个随机编号,大小在1-9之间,用来决定哪个小熊显示出来,
然后需要一个函数用来显示相对应的小熊,此外还此外还需要一个函数用来进行分数的显示。数据方面需要一个表用来存储所有的小熊,
一个表示当前显示小熊的变量,还有点中小熊之后的嘴唇图片变量,一个分数变量。为了小熊的显示不会接连两次重复显示同一个,还
需要一个变量存储上一次小熊的序号。
7、上代码开始,创建创建新类BearMainScene,引入相关头文件,定义函数以及变量:
 /************************************************************************/
/* 头文件:BearMainScene.h*/
/************************************************************************/ #ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"
#include "ui/CocosGUI.h"
USING_NS_CC;
using namespace cocos2d::ui; class BearMainScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene(); virtual bool init(); CREATE_FUNC(BearMainScene); public:
int GetRandNum(); void update(float delta); //帧循环
void GetshowBear(); //获取要显示的小熊并且显示小熊
void setScore(); //设置分数
Vector<Node*> bearNodeArray; //存储所有的小熊列表
Node *alivebear; //当前显示的小熊
Sprite *sp_kiss; //嘴唇精灵
Text *scoreText; //分数控件 static float beginclock; //显示计时
int preBearNum; //上次显示的小熊编号
static float difftime; //显示时间差
static int totalScore; //总分数
}; #endif // __HELLOWORLD_SCENE_H__

实现文件:

 #include "BearKissScene.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h" USING_NS_CC; float BearMainScene::difftime = 1.5;
int BearMainScene::totalScore = ;
float BearMainScene::beginclock = 0.0; Scene* BearMainScene::createScene()
{
auto scene = Scene::create();
auto layer = BearMainScene::create();
scene->addChild(layer);
return scene;
} bool BearMainScene::init()
{
if ( !Layer::init() )
{
return false;
} auto manilayer = CSLoader::createNode("MainScene.csb");
this->addChild(manilayer); char index[];
for (int i = ; i < ; i++)
{
std::string nodename = "ProjectNode_";
memset(index, , sizeof(char) * );
sprintf(index, "%d", i);
nodename = nodename.append(index);
auto sp_w = manilayer->getChildByName(nodename);
bearNodeArray.pushBack(sp_w);
} scoreText = (Text*)manilayer->getChildByName("Text_Score");
setScore(); sp_kiss = Sprite::create("m.png");
sp_kiss->setVisible(false);
sp_kiss->setAnchorPoint(Vec2(0.5, 0.5));
this->addChild(sp_kiss); GetshowBear(); //拉姆达表达式做碰撞监听
auto bearListener = EventListenerTouchOneByOne::create();
bearListener->onTouchBegan = [&](Touch *touch, Event* event){
auto bearrect = Rect(, , alivebear->getContentSize().width, alivebear->getContentSize().height);
auto startpos = alivebear->convertToNodeSpace(touch->getLocation()); if (bearrect.containsPoint(startpos) && alivebear->isVisible())
{
sp_kiss->setVisible(false);
sp_kiss->setPosition(touch->getLocation());
sp_kiss->setVisible(true);
totalScore += ;
//如果显示时间间隔大于0.1秒,那么分数每增长1000分,时间差减去0.1,这样子,就会随着分数的提高难度增加
if (difftime != 0.1)
{
if (totalScore % == )
{
difftime -= 0.1;
}
} setScore();
} return true;
}; bearListener->onTouchMoved = [](Touch *touch, Event* event){
}; bearListener->onTouchEnded = [&](Touch *touch, Event* event){ }; _eventDispatcher->addEventListenerWithSceneGraphPriority(bearListener, alivebear); this->scheduleUpdate(); return true;
} int BearMainScene::GetRandNum()
{
int num = ;
while ()
{
num = rand_0_1() * ;
if (num >= && num < )
{
break;
}
}
return num;
} void BearMainScene::GetshowBear()
{
int idx = GetRandNum();
while (idx == preBearNum)
{
idx = GetRandNum();
}
preBearNum = idx;
std::string spritename = "Sp_bear";
auto bearNode = bearNodeArray.at(idx);
alivebear = bearNode->getChildByName(spritename);
if (sp_kiss->isVisible())
{
sp_kiss->setVisible(false);
}
alivebear->setVisible(true);
} void BearMainScene::update(float delta)
{
beginclock += delta;
if (beginclock >= difftime)
{
beginclock = ;
alivebear->setVisible(false);
GetshowBear();
}
} void BearMainScene::setScore()
{
char scorestr[];
memset(scorestr, , sizeof(scorestr));
sprintf(scorestr, "%d", totalScore);
scoreText->setString(scorestr);
}

8、然后,修改appdelegate的glview属性:glview = GLViewImpl::createWithRect("MyKissBear", Rect(0, 0, 640, 960));

这里需要注意,如果想要跑WP8的工程createWithRect这个函数是没有的,需要使用setFrameSize去设置大小。

9、最后进入项目目录,打开命令行窗口:cocos run -p android -m release --ap-20 ,当然请把android手机连上电脑。这里需要

注意,这里编译的是release版本,是需要签名的,如果嫌麻烦,将release改成debug或者直接去掉,因为默认是debug版本编译的。

那么要签名的话,需要先生成签名文件,这里简单说下方法,同样进入项目目录,打开命令行窗口:keytool -genkey -alias demo.keystore -keyalg RSA -validity 3650 -keystore demo.keystore

demo.keystore是签名文件名称,RSA是加密方式,3650是有效天数,-alias是别名,还有个keysize,这里就不设置,默认就好。

签名文件生成之后,在执行前面的run命令,根据提示输入keystore路径,就好了。

10、如果使用ecliose编译,相关路径一定要配置好,我遇到的问题就是提示c++空指针,原因是因为我在首次打开eclipse是NDK路径

没有设置正确,即使NDK之后设置正确,打开也会报错,解决方法:删除android工程下的.cproject文件。

最后,上一张手机上的效果图:

 

好啦,到这里就结束了。

使用cocos2d-x3.4结合cocos2.1.5制作小游戏《亲亲小熊》的更多相关文章

  1. 用cocos2d 2.1制作一个过河小游戏(4): 游戏主逻辑BaseLayer设计

    前段时间一直在忙.没有时间更新博客.今天还是抽点时间把最后一小部分游戏的实现放上来吧. BaseLayer.h: #import <GameKit/GameKit.h> #import & ...

  2. 基于cocos2d开发的android小游戏——採花仙

    /*cocos 2d 已经成为了如今移动端游戏开发的强有力的工具,眼下主流游戏中多採用cocos 2d游戏引擎. 我也尝试了一下该引擎.我是用的是cocos2d-android,以后要移植到Cocos ...

  3. cocos2d 小游戏

    今天写了一个小游戏,发现看过的代码自己来写还是会经常出错,还是要多自己动手写写哈. 先上几张游戏界面图 void HelloWorld::addTarget() { //首先初始化精灵 CCSprit ...

  4. [cocos2d demo]认字小游戏

    2013.9.5更新第二版 游戏分三个场景,分别为主场景,加载场景以及游戏场景,游戏场景分为背景层,逻辑层以及UI层 1.背景:旋转太阳,移动波浪,漂浮的云 2.UI层:随机生成字附带在帆船上移动,当 ...

  5. iPhone开发与cocos2d 经验谈

    转CSDN jilongliang : 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE.开发框架uikit,还有开 ...

  6. Mac下搭建cocos2d 和cocos2d -x 环境

    来源:http://blog.csdn.net/duxinfeng2010/article/details/7985024 cocos2d是一个开源框架,用于构建2D游戏.演示程序和其他图形界面交互应 ...

  7. 一个cocos2d程序的完整人生(从环境到代码全过程)

    今天我的打砖块小游戏Beta0.1终于完成了,比较开心,写一下这个程序从出生到长大的全过程把. 这是个博客集合帖,具体的操作细节我都在其它博文中有详细说明,下面会给出链接   首先,我想我还是要介绍一 ...

  8. cocos2d的框架思路

    这是我第一次写cocos的框架思路哈,虽然只是写完了一个程序,按理来说应该再多写一些,多积累一些经验了再来写这个框架的构成,但是我觉得还是把我这次写代码的所有想法先记下来哈,等到以后继续写cocos的 ...

  9. 关于cocos2d这个东西

    我是在今年6月份左右接触到cocos2d这个东西的,当时就是想写个小游戏,结果买书的时候误打误撞就买了cocos2d的书. cocos2d是一个开源的游戏引擎,用于构建2d游戏,同时也可以用它写各种图 ...

随机推荐

  1. C/C++技术常用网站

    软件下载网站[visual studio 2005编译器] http://www.xdowns.com/ debug调试大牛 http://blogs.msdn.com/oldnewthing/ ht ...

  2. 这种代码怎么改写?以致于在下次增加CustomsType时,不需要再加 if 语句。

    最近看到项目里一段代码如下: excelObject excel = new excelObject(); if (loadbill.CustomsType == 1) excel.IDownload ...

  3. Java集合运用技巧

    需要唯一吗? 需要:Set 需要制定顺序吗? 需要:TreeSet 不需要:HashSet 但是想要一个和存储一致的顺序(有序):LinkedHashSet 不需要:List 需要频繁增删吗? 需要: ...

  4. Spark源码学习1.7——Master.scala

    master第一步是加载系统定义的环境变量,如worker的超时时间.系统保留的Application数目等:第二步,加载worker的信 息,地址.id等:第三步,加载Application的信息, ...

  5. RABBITMQ(小总结 持续更新...

    (一)理解消息通信 1.消息通信概念---消费者.生产者和代理 生产者(producer)创建消息,然后发送到代理服务器(RaabitMQ). 其中消息包括两部分内容:有效载荷(payload)和标签 ...

  6. js中遍历出查询后的listmodel(下拉框系列)

    function selectclassname(){ $.ajax({ url:"queryschoolclasslists.action", async:false, data ...

  7. datatables ajax后端请求那些坑

    在对datatables做后端数据填充的时候,遇到一个,翻页问题.在多次操作翻页后,总是提示加载中.反了很多博客没有找到原因. 经过测试,发现原来自己坑了自己. 代码如下: datatables : ...

  8. Android应用开发SharedPreferences存储数据的使用方法

    Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...

  9. 可编辑的div元素去除粘贴复制带来的额外样式,实现纯文本粘贴

    $(function(){ var update = function(original){   var new_content = $('.testmr').html();      var new ...

  10. mongo链接solr的过程与问题

    我的环境: 1:ubunt 16 2:mongodb 2.6.1 3:solr 6.3 4:JDK 1.8 准备过程: 1:安装mongo-connector #pip install mongo-c ...