当前位置:首页 » 安卓系统 » cocos2dandroid

cocos2dandroid

发布时间: 2023-07-12 23:31:09

A. cocos2dx android 代码混淆

1. 下载cocos2dx 2.2.1

去cocos2dx官网下载就好,最好是2.2.1版本。3.0版本变化比较大,也没测试过。

3. 创建工程

使用cocos2dx目录下的tools/project-creator/create_project.py创建一个工程。

4. 编译android版本

网上很多文章说,编译cocos2dx的Android版本时需要安装cygwin之类的,其实这对于目前的ndk版本来说是不必要的,因为高版本的ndk都集成了cygwin的一些功能。我这里使用的是ndk
r9d。下面来说一下操作步骤。

我编译的习惯是直接在jni目录下预先ndk-build命令,因为在Windows下使用.sh结尾的文件太怪异了。首先来看一下build_native.sh干的工作:

这是build_native.sh中实际工作的部分。可以看到它使用NDK_ROOT下的ndk-build来编译,还导入了NDK_MODULE_PATH,
这个NDK_MODULE_PATH是为Android.mk中的import-mole提供路径选择。

现在来导入NDK_MODEL_APTH, 在Android.mk的import-mole之前加上cocos2dx中的几个路径:

$(call import-add-path, G:/cocos2dx)

$(call import-add-path,
G:/cocos2dx/cocos2dx/platform/third_party/android/prebuilt)

运行ndk-build, 编译。

编译时可能出现这样的错误:error: GLES2/gl2.h: No such file or
directory,这是因为低版本的Android版本不支持opengl es2.0,在Application.mk中加上:

APP_PLATFORM := android-17

5. 生成apk包

在eclipse下打开创建的工程,导入相关的包后,在AndroidMenifest.xml中加入:

android:debuggable="true"

表明这是一个可以调试的包。运行,结果出现:

这是因为该工程默认使用build_native.sh编译:

因为build_native.sh现在已经没用了,所以把它改成:

这个意思是,直接使用NDK_ROOT环境变量下的ndk-build.cmd来编译工程,编译成debug版本,编译成armeabi和armeabi-v7a两种指令格式的库,执行这个命令的目录是工程目录下的jni文件夹。debug版本和armeabi-v7b主要是为了后面使用visualGDB调试做准备。

再编译,就可以生成apk包了。

VisualGDB调试

1. 下载并安装VisualGDB, 安装完成后,在Visual Studio的目录中可以看到Android选项:

2. 配置VisualGDB, 在Android -> Setup SDK/NDK location

主要配置JDK,SDK,NDK,ANT路径

3. 设置要调试的apk包。Android -> Debug a Custom APK file

4 设置完成后,在代码中设置断点,点击Debug, 开始调试

5. 等apk安装完成后,程序会运行到断点出,就可以开始用Visual Studio调试了

B. android cocos2d x 怎么创建地图

对于这一教程,你需要安装最新的Cocos2D-X版本(游戏邦注:在写本篇教程的时候更新到2.1.4)。如果你还未拥有最新版本的Cocos2D-X,先下载它并在终端运行如下命令去安装模版:


cd ~/Downloads/cocos2d-x-2.1.4 ./install-templates-xcode.sh -f -u 然后使用iOScocos2d-xcocos2dx模版在Xcode创造一个新项目。点击Next,将项目命名为TileGame,将项目设置为Universal,点击Next然后点击Create。


你将在这一项目中使用ARC,所以如果这是你第一次听到ARC,我会鼓励你先了解下它。模版并不是默认使用ARC,但幸运的是,我们能够轻松地进行 修改。前往EditRefactorConvert to Objective-C ARC。往下拉并只选择文件main.m, AppDelegate.cpp, HelloWorldScene.cpp,然后点击Check并完成向导的步骤。


select targets(from raywenderlich)


创建并运行,然后确保一切都还正常运行—-你应该能够看到标准的“你好世界”屏幕。


接下来下载游戏资源的压缩文件。压缩文件包含如下内容:


你将面向玩家对象使用的精灵。


一些伴随着cfxr效用所创造的音效(你将会在教程中用到)。


一些伴随着Garage Band所创造的背景音乐。


你将用到的一些砖块设置—-这将伴随着你将使用的地图编辑器,但我认为我们能够更轻松地将其与其它内容包含在一起。


一些额外的“特别”砖块,将在之后进行详细解释。


当你下载了资源后,打开它并将TileGameResources文件夹拖到项目的Resources群组中。在项目菜单里,右击 Resources群组,并选择Add Files to “TileGame”…选择Resources/TileGameResources文件夹,核实选中了Copy items into destination group’s folder (if needed)以及Create groups for any added folders,然后点击完成。


如果一切顺利的画,所有的文件都将出现在你的项目中。

tile game(from raywenderlich)


现在我们将开始创造地图!


创造地图


Cocos2D-X支持基于开放源Tiled Map Editor去创造地图并将其以TMX格式进行保存。


下载Tiled Map Editor。在编写本篇教程的时候,其最新版本是0.9.0。


然后运行Tiled,前往FileNew,并如下填写对话内容:

new tileset(from raywenderlich)

为了获得图像,点击Browse并导航至你自己的TileGame/Resources/TileGameResources文件夹,然后选择你之前从资源压缩中下载的tmw_desert_spacing.png文件,并将其添加到项目中。它将自动根据文件名填写名字。

你可以将宽度和高度设置为32×32,因为这也是砖块的大小。对于边缘和间隔:

边缘是关于在Tiled开始寻找真正的砖块像素前应该为当前的砖块略过多少多少像素(包括宽度和高度)。

间隔是关于Tiled在明确了实际砖块像素并转向下一个砖块数据之后应该前进多少像素(包括宽度和高度)。

如果你着眼于tmw_desert_spacing.png,你将发现每个砖块都围绕着一个1像素的黑色边缘,这也解释了边缘和间隔为1的设置。

tile(from raywenderlich)

当你点击OK时,你将看到砖块呈现在Tilesets窗口中。现在你可以开始绘制了。点击工具栏的Stamp
Brush图标,然后点击地图上的任何一个位置去放置一个砖块。

tileset(from raywenderlich)

所以继续绘制地图—-尽可能发挥创造性!确保添加至少一些建筑到地图上,因为你在之后将需要一些碰撞内容。

tileset(from raywenderlich)

为了更轻松地绘制内容,你可以着眼于一些快捷方法。以下是最常用到的一些方法:

你可以在Tileset选择器中围绕着一系列砖块拖曳一个盒子,并同时放下多个相邻的砖块。

你可以通过Viewoom In和Viewoom Out进行放大和缩小。

z键将在基于Stamp Brush工具编辑地图时进行旋转。

在一些新功能中你可能会注意到Mini-map。这是一个很棒的功能,它让你能够看到一个迷你地图!着眼于我在Mini-map最下方的迷宫中的糟糕尝试。红色盒子代表你在主要编辑窗口中看到的区域。

tileset(from raywenderlich)

当你在阅读下一个区域中的滚动时牢牢记住这一Mini-map视图。

需要注意的是这一教程的资源是出现在地图前的——所以如果你很懒的话便可以直接利用它。如果你这么做,你应该在Tiled打开地图并明确它是如何设置的。

当你完成地图的绘制时,在Layers视图中双击Tile
Layer,将名字改为Background。然后点击FileSave,并将文件保存到TileGame项目中的TileGame
ResourcesTileGameResources,将文件命名为TileMap.tmx,并覆盖现有的文件。

你将在之后使用Tiled做其它事,但是现在让我们将这一地图带进游戏中!

添加Tiled地图到Cocos2D-X场景中

打开HelloWorldScene.h,在#include “cocos2d.h”之后添加如下内容:

usingnamespacecocos2d;

这能指导编辑器去使用cocos2d命名空间,所以你不需要为所有内容加上cocos2d的前缀。

然后添加以下内容到类定义中,即在花括号之后:

private:CCTMXTiledMap*_tileMap;CCTMXLayer*_background;

这创造了一个实例变量去追踪砖块地图本身,并创造了另一个实例变量去追踪地图的背景层。你将在之后学到更多有关砖块地图层面的内容。

接下来,用如下内容换掉HelloWorldScene.cpp:

CCTMXObjectGroup*objectGroup=_tileMap->objectGroupNamed(“Objects”);if(objectGroup==NULL){CCLog(“”);returnfalse;}CCDictionary*spawnPoint=objectGroup->objectNamed(“SpawnPoint”);intx=((CCString)*spawnPoint->valueForKey(“x”)).intValue();inty=((CCString)*spawnPoint->valueForKey(“y”)).intValue();_player=newCCSprite();_player->initWithFile(“Player.png”);_player->setPosition(ccp(x,y));this->addChild(_player);this->setViewPointCenter(_player->getPosition());

最后一行有个预兆——但不要担心,你很快就能到达那里。

让我们暂停一会并解释对象层面和对象群组。首先注意你是通过在CCTMXTiledMap对象中(而不是layerNamed)通过objectGroupNamed方法检索对象层面。它返回了一个特殊的CCTMXObjectGroup对象。

然后objectGroup调用了objectNamed方法去获得一个CCDictionary,并包含了一些有关对象的有用信息,如x和y轴,宽度和高度。在教程的这一部分,你需要关心的便是x和y轴,将其设置为玩家精灵的位置。

在代码块的最后你设置了视图去明确玩家的位置。所以现在添加如下内容到HelloWorldScene.h中:

//(CCPointposition);

并添加一个新方法到HelloWorldScene.cpp(在文件的最下方最好):

voidHelloWorld::setViewPointCenter(CCPointposition){CCSizewinSize=CCDirector::sharedDirector()->getWinSize();intx=MAX(position.x,winSize.width/2);inty=MAX(position.y,winSize.height/2);x=MIN(x,(_tileMap->getMapSize().width*this->_tileMap->getTileSize().width)–winSize.width/2);y=MIN(y,(_tileMap->getMapSize().height*_tileMap->getTileSize().height)–winSize.height/2);CCPointactualPosition=ccp(x,y);CCPointcenterOfView=ccp(winSize.width/2,winSize.height/2);CCPointviewPoint=ccpSub(centerOfView,actualPosition);this->setPosition(viewPoint);}

这是关于砖块的解释。想象这一函数设置了摄像机的中心位置。它让用户能够进入地图中x,y轴的任何位置—-但是你有可能不想呈现出某些点,如你可能不想要屏幕超过地图的边缘(那么它便只会呈现出黑边!)。

C. cocos2dx移植Android平台

如果你用的是windows系统作为开发环境,使用的是cocos2d-x3.2最新版的,你在一开始安装cocos2d-x的时候,会要求输入
NDK_ROOT
ANDROID_SDK_ROOT
ANT_ROOT
最新版的cocos2d-x使用了python来进行安装和编译程序的,所以你要先在你的windows系统上安装上python.安装好之后,下载最新版的cocos2d-x,然后,cd到这个目录下,你会看到一个有一个setup.py的文件,.py后缀的文件就是python的脚本文件了。是要用python来运行的。如果你安装好python之后设置好了python的环境变量,这个时候,你只要在命令行里运行:
python setup.py就可以了。
然后你就可以看到要求你输入的这三个路径了。
这三个工具的所在路径,这几个路径输入对了之后,你的cocos2d-x就安装好了,这个时候,在cmd里创建一个新项目,创建的方法是在命令行里输入:
cocos new youprojectname -p com.youcom,youprojectname -l cpp -d 你的新建项目所在路径
然后回车,你就可以看你的的项目会在你的新建项目路径下有一个youprojectname的文件夹,打开,你就可以看到里边有各个系统的project文件夹了,还有一个Class和Resources的文件夹。这个时候,你在命令行里cd到你的proj.android文件夹下,使用命令:
python bulid_native.py
就可以对你的安卓新建的helloworld项目进行编译了。不出意外,要不然一分钟就编译好了。会生成一个libcocos2dcpp.so在你的pro.android/libs/armabi的路径下。然后打开你的ADT,也就是eclipse,进入pro.android目录,导入android项目到eclipse。这个时候可能会报一个cocos2d-x的lib库错误,只要把cocos2d-x的
cocos2d/cocos/platform/android/java/src
目录下的文件夹复制到pro.android/src下就可以解决这个问题了。
然后,接上你的android手机,并且在手机中打开开发者模式。点击程序远行设置,选择使用设备运行。在弹出的一个选择手机设备的框时选择run,不一会,你的helloworld项目就可以在手机上看到了。
如果要调试,你可以在eclipse中打开logcat,看到cocos2d-x的log输出信息。
总的来说,android最好的开发环境还是mac系统。因为在mac系统下很多linux命令都可以使用。不像windows系统比较蹩脚。

热点内容
ubuntu设置ftp权限 发布:2025-02-06 01:54:07 浏览:598
奇瑞5哪个配置值得买 发布:2025-02-06 01:51:56 浏览:551
黑鲨手机哪里看安卓版本 发布:2025-02-06 01:36:04 浏览:802
如何配置2柠檬酸 发布:2025-02-06 00:57:26 浏览:435
积木源码 发布:2025-02-06 00:55:26 浏览:546
变分的运算法则 发布:2025-02-06 00:55:21 浏览:776
x2哪个配置性价比高 发布:2025-02-06 00:40:12 浏览:110
猪哥亮访问张菲 发布:2025-02-06 00:37:52 浏览:571
期货账户怎么改密码 发布:2025-02-06 00:32:35 浏览:280
qq自动上传群文件 发布:2025-02-06 00:26:25 浏览:112