导读: 创建windows平台项目 一、 搭建windows开发环境 官网上显示cocos2d-x支持win7、winxp、vista系统但我只在win7上用过以下说明均是在win7系统上的编译器使用vs2010。 1、 安装vs201
创建windows平台项目 一、 搭建windows开发环境 官网上显示cocos2d-x支持win7、winxp、vista系统但我只在win7上用过以下说明均是在win7系统上的编译器使用vs2010。
1、 安装vs2010 2、 安装Visual Assist X可选
3、 执行build-win32bat编译cocos2d-x
4、 运行cocos2d-x根目录下的install-templates-msvcbat将cocos2d-x模板加入vs模板库。
5、将\Debugwin32目录下的所有dll文件拷贝至Windows\system32\ (iconvdll libcocos2ddll libcocosDenshiondll libcuridll libEGLdll libgles_cmdll libxmldll pthreadVCE2dll zlib1dll )6、 双击cocos2d-win32vc2010sln进入vs编译环境
二、 新建win32项目
1、在“解决方案”上单击右键选择“添加”-〉“新建项目”。
2、选择“左侧Cocos2d-x模板”在右侧列表中选择“Cocos2d-win32 Application”输入项目名称“Cocos2dDemo”点“确定”。
3、在弹出的对话框中点击“下一步”。
4、如果需要使用Box2D引擎则选中否则不要选。点击“finish”创建成功。
三、 编译运行
1、右键Cocos2dDemo项目选择“生成”进行编译。
2、右键Cocos2dDemo项目选择“设为启动项目”。然后F5或者点击菜单栏的运行键 运行。
四、 创建新的解决方案 新建项目有两种方式一是直接在cocos2d-x解决方案中添加新项目上面已经介绍过了。当你刚开始接触cocos2d-x还在尝试写demo时用这种方式可以快捷的创建demo而且方便查看例子中的代码。
另一种方式是创建一个新的解决方案方法如下
1、“文件”-〉“新建”-〉“项目”
2、进入新建项目的窗口选择“左侧Cocos2d-x模板”在右侧列表中选择“Cocos2d-win32 Application”输入项目名称“Cocos2dDemo”点“确定”。然后执行“下一步”。
3、使用Box2D引擎则选中否则不要选。点击“finish”创建成功。
4、单击左下角的属性标签或者选择“视图”-〉“属性管理器”打开属性管理器
5、在属性管理器中双击“MicrosoftCppWin32user”弹出属性页在里面设置VC++目录即可。这样该设置对所有VC项目都有效见下图。
6、在“包含目录”中, 加入下列项目 (D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32)
7、在“库目录”中, 加入下列项目(D:\adroid\cocos2d-20x-203\Debugwin32)(发布时用release目录下的!!)
8、上面的第4、5、6、7条
也可以通过如下方法解决: 定位到%USERPROFILE%\appdata\local\microsoft\msbuild\v40可以通过运行或直接在windows资源管理器的地址栏中输入使用其他文本编辑工具修改MicrosoftCppWin32userprops或MicrosoftCppX64userprops文件中的相关字段。以下是我的文件内容 <IncludePath>D:\android\cocos2d-20-x-203;D:\android\cocos2d-20-x-203\cocos2dx;D:\android\cocos2d-20-x-203\cocos2dx\include;D:\android\cocos2d-20-x-203\cocos2dx\platform;D:\android\cocos2d-20-x-203\cocos2dx\platform\win32;D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32\OGLES;D:\android\cocos2d-20-x-203\external\Box2D;D:\android\cocos2d-20-x-203\CocosDenshion\include;D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32;D:\android\cocos2d-20-x-203\cocos2dx\kazmath\include;$(IncludePath)</IncludePath><LibraryPath>D:\android\cocos2d-20-x-203\Debugwin32;$(LibraryPath)</LibraryPath> 第4至8条的作用是加入解决方案所依赖的头文件和库文件以保证项目的正常编译运行。
五、 如何删除vs里的cocos2d-x模板
1、 打开如下目录 (Example as default install) 1VS2008: C:\Program Files\Microsoft Visual Studio 90\VC\vcprojects\ 2VC2008Express: C:\Program Files\Microsoft Visual Studio 90\VC\Express\VCProjects 3VS2010: C:\Program Files\Microsoft Visual Studio 100\VC\vcprojects\ 4VC2010Express: C:\Program Files\Microsoft Visual Studio 100\VC\Express\VCProjects
2、 删除此目录下的 Cocos2d-x文件夹 3、 删除前缀为 CCAppWiz (080 or later) 或 CCXAppWiz (072 or earlier)的文件
将项目由win32移植到android平台
一、 快速搭建android开发环境
1、将服务器上的eclipse、java、android sdk、android ndk、cygwin、cocos2d-x文件夹拷贝到本地请注意保存的路径为英文、不包含空格、且不要过长。
2、 运行eclipse添加android-sdk的路径。(preferences->Android:SDK Location)
3、 添加ADT(Help->Install New Software:Work with)
4、添加java环境变量。 新建变量JAVA_HOME变量值为java目录的绝对路径。 在path中添加 %JAVA_HOME%\D:\android\Java\jdk160_20\bin; %JAVA_HOME%\D:\android\Java\jdk160_20\jre\bin; D:\android\Java\jre6\bin;
5、运行一次Cygwinbat
6、修改\cygwin\home\用户名\bash_profile文件添加NDK_ROOT=/cygdrive/d/android/android-ndk-r8b export NDK_ROOT
7、 修改\cocos2d-20-x-203\create-android-projectbat中的如下路径 set _CYGBIN=e:\cygwin\bin set _ANDROIDTOOLS=e:\android\android-sdk\tools set _NDKROOT=e:\android\android-ndk-r8
二、 新建android项目
1、 运行create-android-projectbat创建新的android项目例如项目名称为Cocos2dDemo。
2、 将win32下完成的cpp和h文件拷贝到\Cocos2dDemo\Classes
3、将win32下使用的资源拷贝到\Cocos2dDemo\projandroid\assets
4、将cpp文件的路径、使用的头文件的目录加入到Androidmk文件。
5、打开Cygwincd 到/Cocos2dDemo/projandroid目录下
6、执行/build_nativesh进行编译
7、在eclipse中编译打包。
三、 补充
1、20以上版本的引擎基本无法在android模拟器上运行建议在xcode和vs上调试好直接在真机上运行。
2、20以上版本的引擎要求android的开发和运行环境都要22以上的sdk。
将项目由win32移植到ios 一、 创建ios项目
1、 安装XCode
2、执行install-templates-msvcbat将模板添加到XCode
3、打开xcode选择Create a new Xcode project选择cocos2d-x模版
4、点击next填入项目名称Man
5、找到Man的主项目在这里新建一个iOS文件夹。点击create创建完成
6、删除Resource和Classes下的多余文件Helloworld的代码和资源
7、右键点击Resource 选择Add Files to "Man" 7、将Man主项目文件夹下的Resource文件夹中的资源添加到当前工程。注意选择create folder references for any added folders只是添加一个引用
8、同样的方法添加源文件和头文件到Classes下
9、点击Run编译运行
二、 补充
1、Mac 平台的OS X需要106及以上版本
2、IOS平台需要40及以上版本
3、IOS真机支持iPad 1、iPad 2、iPad 3、 iPhone 3GS、iPhone 4、iPhone 4S、iPhone 5、iphone6、iPod Touch 3 and iPod Touch 4 不支持iPhone and iPhone 3G。
SystemloadLibrary("game")一般是调用编译好的DLL(WINDOWS下,LINUX,ANDORID下是so文件)的,想知道详细内容可以去网上搜索下JAVA JNI
CC开头的类估计是JAR包里的,想下载直接把cocos2d- androidjar放到百度里搜就好了
您好,python和ndk没有用最新的
主要原因是之前搞的时候最新的有bug
于是沿用之前成功的版本
下面就是骨头一路上的碰壁:
流水帐开始:
1
首先在公司的win8上安装vs2013半点问题没有
用vs2013打开之前用vs2012下创建的项目提示不好用
愿意是我忽略的升级配置文件的选项。
2
尝试微软提供的项目管理软件:TFS,申请微软的免费服务器。
发现功能太强大,适合大项目的项目管理,但我只需要源代码管理就行。
放弃,尝试git。
3
被vs2013打开过的cocos2dx项目,在2012中打开又报错了。
看来需要彻底升级了。
4
下载解压cocos2dx30beta版本。
使用create_projectpy创建项目比之前友好了
因为换成了图形界面
不过先进命令行的方式还是太麻烦
我们建个快捷方式:
建一个bat文件
输入D:\Java\cocos2d-x-30beta\tools\project-creator\create_projectpy
5
cocos2dx30beta建的新项目比之前大了
因为他直接把编译所需代码拷贝到项目文件夹下
而且可建立在任意位置
6
新项目建立之后vs2013运行ok
于是拷贝到github的本地代码库下
上传(几百M,略大,稍等)
上传ok之后直接打开本地代码库下的sln文件
此时,vs2013会自动配置好git
骨头实验了一下提交到本地和提交到服务器功能
ok
7
回家捣鼓笔记本安装vs2013
(win81已装vs2012)
老报核心什么什么的错
搜了网上几乎所有的办法:管理员、换显卡驱动、打补丁(个人不喜欢一切win的补丁)
还是不成功
于是系统还原到一个没装vs2012的ghost
可以安装了(不计较了 vs那么大,有点问题可以理解)
8
装完vs2013就开始装python装cygwin
结果到后来发现好像不需要cygwin了
cmd进入到projandroid下
敲入 python build_nativepy 命令cmd开始编译
省去了之前版本需要用cygwin编译而且需要修改文件权限的步骤
心惊胆颤的直到发现 so文件ok
9
eclipse打开其中的android项目
导入不报错,运行黑屏。
果然没那么幸运
网上一搜说需要:
把cocos2d-x-30beta/cocos/2d/platform/android/java/src/org/cocos2d-x/lib整个文件夹拷贝到你的项目下projAndroid/src/org/cocos2d-x下
感觉这个步骤完全可以新建cocos2dx项目时脚本自动加上
应该是错误漏掉了
估计下次升级就不需要手动加了
加上之后再次运行
终于看到熟悉的土豆了
10
下一步就是在建一个cocos2dx的源码管理
由于之前试验过
应该没啥问题
就不加到流水帐了
11
回家搞vs2013和github果然有问题。
主要是新的cocos2dx30beta生成的项目太大了
空项目编译运行一次竟然高达800多M
于是学习了下git的配置文件的使用:
gitignore
关键是这个文件正常来说windows不让建立
多敲一个。就行。
第一步在:在ZipFile添加方法,因为_dataThread是个私有的,尽量不改变源码的情况下,添加一个get方法是最好的
这个getAllFile可以返回所有的文件目录
std::vector<std::string>ZipFile::getAllFile(){
std::vector<std::string> vec;
ZipFilePrivate::FileListContainer::iterator it1;
for(it1=_dataThread->fileListbegin();it1!=_dataThread->fileListend();++it1) {
vecpush_back(it1->firstc_str());
}
return vec;
}
第二步:使用getAllFile的返回值做遍历,这里直接帖出iOS和Android的同时遍历吧,同时搜索png和jpg的,可以用于加载资源,记得导入头文件
#include "support/zip_support/ZipUtilsh"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include <direnth>
#include <sys/stath>
#else
#include "platform/CCCommonh"
#include "support/zip_support/unziph"
#include "jni/Java_org_cocos2dx_lib_Cocos2dxHelperh"
#endif
void ResourceLoadingLayer::getAllFile(std::string folderPath,int depth, std::vector<std::string> list, std::string head){
#if CC_PLATFORM_IOS == CC_TARGET_PLATFORM
DIR dp;
structdirent entry;
structstat statbuf;
if((dp =opendir(folderPathc_str())) ==NULL) {
fprintf(stderr,"cannot open directory: %s\n", folderPathc_str());
return;
}
chdir(folderPathc_str());
while((entry =readdir(dp)) != NULL) {
lstat(entry->d_name,&statbuf);
if(S_ISDIR(statbufst_mode)) {
if(strcmp("",entry->d_name) == 0 ||
strcmp("",entry->d_name) ==0)
continue;
getAllFile(entry->d_name,depth+4,list,head+entry->d_name);
} else {
if (headlength() ==0) {
string name = entry->d_name;
if (namelength()>3 && namerfind("") > 0 && (namesubstr(namerfind("")+1,3) == "jpg" || namesubstr(namerfind("")+1,3) == "png")) {
list->push_back(entry->d_name);
}
} else {
string filename = head+"/" +entry->d_name;
if (filenamelength()>3 && filenamerfind("") > 0 && (filenamesubstr(filenamerfind("")+1,3) == "jpg" || filenamesubstr(filenamerfind("")+1,3) == "png")) {
list->push_back(filename);
}
}
}
}
chdir("");
closedir(dp);
#else
ZipFile pFile = new ZipFile(getApkPath(),"assets/");
vector<string> vec = pFile->getAllFile();
for (int i=0; i<vecsize(); i++) {
string file = vecat(i);
if (filecompare("assets/")) {
file = filesubstr(7,filelength());
}
if(filesubstr(0,folderPathlength()) == folderPath ){
string filename = filesubstr(filerfind("/")+1,filelength());
if (filenamelength()>3 && filenamerfind("") >0 && (filenamesubstr(filenamerfind("")+1,3) =="jpg" || filenamesubstr(filenamerfind("")+1,3) =="png") {
list->push_back(filename);
}
}
}
#endif
}
第三步,使用:
首先得拿到资源文件夹的完整路径,方法有很多,只举其一:
在HelloWorld的工程下的资源根目录有一张HelloWorldpng,我们可以直接获取它在程序中的完整路径,即
string fullpath = CCFileUtils::sharedFileUtils()->fullPathForFilename("HelloWorldpng");
所以 string resPath = fullpathsubstr(0,fullpathrfind("/")+1);
得到了完整的资源路径后,
vector<string> vec;
getAllFile(resPath, 0, &vec, "");
这样就大功告成了,vec会保存所有的png或jpg的资源,会带head名的哦,比如说bg/welcomejpg
上面是遍历所有的文件夹,如果单独遍历资源文件下的某个目录,即是
getAllFile(resPath+"xxx",0,&vec,""); xxx 为资源根目录下的子目录,这样就可以分别加载某个目录了