导航:首页 > 编程语言 > cocos2dxjava传值

cocos2dxjava传值

发布时间:2023-02-12 17:59:55

『壹』 cocos2dx3.10 怎么运行cocos2dx库

一、通用准备工作

1、安装Cocos2d-x 3.1

在Cocos2d官网上下载 Cocos2d-x 3.2+引擎 ,下载后解压缩。

2、安装Eclipse与Android SDK

这个在Mac上或是PC上开发都是可以通用的。

Eclipse 在其官网下载( 官网地址 )。

Android SDK 在Android开发者中心下载( 地址 )。

Eclipse是开发Android需要用到的IDE。这是个很牛的IDE,有许多插件让他变得三头六臂。要开发Android的程序,需要下载相关的插件,但如果每个插件要自己配置,会是很蛋痛的事情。

如果是新手,推荐使用:ADT Bundle。这是Eclipse+Android SDK的合体,所有的项目都已经帮你配置好了。

3、安装JDK

Eclipse需要java环境才能运行。如果事先没有安装Java环境,则会报错。

解决方案安装jdk( 下载地址 )。

一般来说安装之后会自动配置好环境变量。如果还没有解决问题,请查找网络上关于JDK安装的攻略,很多的。

4、安装CDT插件 ( 下载地址 )

这是个Eclipse的插件,用来支持Eclipse中C/C++语言的开发。

从Eclipse的官网下载,下载之后,将features和plusins这两个文件夹里面的内容复制到Ecplise安装目录下对应的文件夹之后就可以了。

5、安装NDK ( 下载地址 )

这是进行C/C++与Java混合编译的必要工具。记下下载之后解压到的目录,因为到之后的安装中会用到。

6、安装ANT ( 下载地址 )

Cocos的Android开发需要用到它,所以下载下来安装好吧。

二、PC环境下配置过程

1、安装VS2012 ( 官方地址 )

网上还有很多其他下载地址。

最好是2012,我曾经试过2010,2013,都会出这样那样的问题。所以,2012!

2、安装python 2.7.6 ( 下载地址 )

因为Cocos2d-x的安装程序是用phthon写的,所以需要这个软件。不要下载python3.0以上的版本,否则运行会出错。如果是Mac,那么天生就自带了。

3、进行开发环境配置

以上的工作完成之后,就可以进行配置了。启动Windows的命令行(CMD)工具。进入Cocos2d-x 3.1的安装目录,执行:

python setup.py
Cocos2d-x 3.1版本使用这个setup.py来安装,十分方便。执行之后会让你配置上面准备工作中所安装的:ANT、NDK、SDK等目录,把安装到哪儿去了填写进入就行。

4、建立自己的项目

用setup.py配置好Cocos2d-x的环境之后,你的命令行中就会多如“cocos”的命令,新建项目将使用这个命令进行。示例:

cocos new hello(项目名称)-p com.hello(包名字)-l cpp(项目类型) -d E:\MyCocos\cocos2d(目录)
新建的项目会把所有的源文件和库都拷到你的项目目录中。所以新建的项目文件会很大,有许多人怀疑这个的必要性,不过到你之后的开发中就会知道这种配置方法是对的了。

项目建立好之后,就可以开发了:

A、进行VS2012的开发。

找到你的项目目录下的:proj.win32,打开里面的解决方案就行。剩下的就是你的任务了。一般来说,直接就可以运行。

B、进行Android的开发。

使用Eclipse中的项目导入,导入proj.android中的项目方案。导入之后,因为SDK的问题,一般无法启动,关于这个问题,以及其它的问题,请参见(四、其它问题解决方案)。

三、MAC环境下配置过程

1、注册苹果开发者账号 ( 注册地址 )

如果不使用真机,使用模拟器调试,那么有开发者账号应该就足够了。

如果要使用真机调试,需要购买IOS开发者会员,688RMB一年。我看到之前的攻略说要99美元,但是看现在的页面的的提示,应该只要有网银就可以支付了。网上的攻略写得非常复杂,说要下载证书什么什么的,现在统统都不需要了,XCode全部为您代劳了,只要照提示一路点同意就行。

2、安装XCode

在你的开发者首页下面就有XCode的下载。通过App Store下载安装即可。

请使用最新的XCode(需要OS X 10.8以上系统支持),并使用App Store安装。我的MacBook Air从朋友那里拿来时还是10.7,因为下载总是中断,屡次不成功,所以用XCode 4.6,但好像不通过App Store安装会出这样那样的问题。所以强烈推荐使用最新的版本。

3、进行开发者环境配置。

与PC的配置一样,打开MAC的终端程序,执行setup.py,配置好各种SDK的路径就行。但MAC需要再加上一句:

source /Users/yourname/.bash_profile
这是用来刷新配置文件的。

4、建立项目文件

使用命令行建立。

如果你像我一样用两个平台(PC与MAC)开发,可以共享同一个项目目录。我的项目文件是放在PC上的,MAC通过共享访问项目文件。

项目建立好之后就可以开发了。MAC下的配置相对简单,使用XCode打开项目目录下的proj.ios_mac下的项目配置文件就行。之后基本不会出错的。

四、其它问题解决方案

Eclipse与Android相关:

问题 :SDK错误

因为Cocos2d-x的模版默认是使用Android 2.3.3(API-10),如果新安装的ADT Bundle或Android SDK,是API-19,则会出现错误,解决方案是通过Android SDK中的管理工具(SDK Manager)下载Android 2.3.3的SDK。

问题 :Project 'XXX' is missing required source folder: 'gen'

这个问题就是上面的SDK错误导致的。

问题 :undefined reference to 'cocos2d::network::HttpClient::getInstance()'

我是使用网络库(network)的时候出现这个错误的。如果你使用其它库,解决方案是一样的。原因是缺少库的引用。解决方案是在Android.mk里面增加:

LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static

Cocos2d-x的开发者已经在Android.mk里面加上了很多这种路径,平时是注释掉的。您要使用时把这些增加上去就行。

问题 :fatal error: cocos-ext.h: No such file or directory

问题分析:缺少头文件路径的引用

需要在:Android.mk里面增加

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../cocos2d/extensions

Cocos2d-x的开发者已经在Android.mk里面加上了很多这种路径,平时是注释掉的。您要使用时把这些增加上去就行。

问题 :The import org.cocos2dx.lib cannot be resolved。

无法找到指定的库文件。解决的方案是增加路径的引用:Project Properties -> Java Build Path -> Source and then linking “项目目录/cocos/platform/android/java/src”

VS2012相关:

问题 :“extensions/ExtensionMacros.h”: No such file or directory

无法打开包括文件。

1、解决方案中,添加“现有项目”--> libExtensions 具体目录: ..\cocos2d\extensions\proj.win32\libExtensions.vcxproj

2、项目中添加引用-->libExtensions

3、通过:属性->C/C++->附加包含目录。附加包含目录:$(EngineRoot)

如果你使用其它的文件,解决方案是一样的。1、增加项目的引用。2、附加头文件的包含目录。

当遇到COCOS2DX 3.2+版本创建权限问题时:

首先,打开终端cd到目录 /cocos2d-x-3.2/tools/cocos2d-console/bin 下, 运行 cocos.py 脚本创建文件。

[javascript] view plain

./cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop
参数说明:

HelloWorldDemo为项目名称

-p 后面接包名

-l 后面接开发语言类型,有cpp, lua, js三种类型

-d 后面接项目存放的目录

如果出现 -bash: ./cocos.py: Permission denied ,是因为没有权限。 用命令 chmod 修改一下目录下的 cocos.py 权限就可以了

[cpp] view plain

chmod u+x cocos.py

『贰』 cocos2d-x jni 问题求助

你试试看

#include <platform/android/jni/JniHelper.h>

cocos2d::JniMethodInfo minfo;

jobject jobj;

if (!cocos2d::JniHelper::getStaticMethodInfo(minfo, "org/cocos2dx/cpp/AppActivity", "getInstance", "()Ljava/lang/Object;"))
return;

jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);

if (!cocos2d::JniHelper::getMethodInfo(minfo, "org/cocos2dx/cpp/AppActivity", "你java中AppActivity的成员函数", "(I)V"))
return;
minfo.env->CallVoidMethod(jobj, minfo.methodID, 函数参数);

『叁』 cocos2dx-3.7版本lua程序入口在哪

一、主要分为两个大步骤,Lua工程的修改,android工程的修改
二、工程环境
开发工具:Cocos-Code-IDE
Lua版本 : Lua 5.1
java版本:1.7
NDK版本:android-ndk-r10c
ANT版本:apache-ant-1.9.4
Framwork:cocos-2dx-3.4
python : 2.7.3
三、Lua工程中的修改
1.在Cocos-Code-IDE中新建Lua工程
可以在这个工程目录中找到Luaj:

2.新建一个lua类,写上调用android的方法。
我在src/app/models/下面新建了一个Lua文件,命名为:luajTest.lua
其中代码如下:
local luaj = require "cocos.cocos2d.luaj" --引入luaj

local luajTest = class("luajTest") -- 构建lua 类

function luajTest:callandroid() --调用android的方法实现
--包名/类名 这个可以在对应的android工程的manifest中得到
local className="org/cocos2dx/lua/AppActivity"
local args = { "hello android", callbackLua }
local sigs = "(Ljava/lang/String;I)V" --传入string参数,无返回值

--luaj 调用 Java 方法时,可能会出现各种错误,因此 luaj 提供了一种机制让 Lua 调用代码可以确定 Java 方法是否成功调用。
--luaj.callStaticMethod() 会返回两个值
--当成功时,第一个值为 true,第二个值是 Java 方法的返回值(如果有)
--当失败时,第一个值为 false,第二个值是错误代码
local ok,ret = luaj.callStaticMethod(className,"test",args,sigs)
if not ok then

item:setString(ok.."error:"..ret)

end

end

return

3.在入口场景中调用android方法。
我修改了src/app/views/MainScene.lua的场景跳转方法,如下:
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
local testluaj = require('src.app.models.luajTest')--引入luajTest类

function MainScene:onCreate()
-- add background image
display.newSprite("MainSceneBg.jpg")
:move(display.center)
:addTo(self)

-- add play button
local playButton = cc.MenuItemImage:create("PlayButton.png", "PlayButton.png")
:onClicked(function()
self:getApp():enterScene("PlayScene") --跳转了一个场景

--在这里尝试调用android static代码
local testluajobj = testluaj.new(self)

testluajobj.callandroid(self);

end)
cc.Menu:create(playButton)
:move(display.cx, display.cy - 200)
:addTo(self)
end

return

4.以上为Lua工程中的修改。
四、android工程的修改
1.找到相对应的android工程的。
Lua工程通过Runtime构建的android工程在Lua工程\framewokes\runtime-src\proj.android中。
2.根据luajTest.lua类中定义的包名类名,找到AppActivity.java
3.打开AppActivity.java,在空白处加上uajTest.lua类中定义要调用的方法test.
public static void test(final String param,final int luaFunc) {
System.out.println("----传过来的参数----param:"+param);
System.out.println("-------luaFunc:"+luaFunc);

/**
* 给lua返回一个字符串
*/
Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunc, "success");
/**
* 移除luaId
*/
Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFunc);
}
1234567891011121314

记得在文件上面引入Cocos2dxLuaJavaBridge类。
import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;1

4.到此,修改完成。构建apk,安装到手机中,看Log.
如果看到以下Log,证明你的Luaj成功调用了java代码了。

『肆』 java 在cocos2dx中需怎么引入

要完成在cocos2dx的场景上一个点击事件,传递一个消息到java层,下面让我们看看如何完成它。
包括
你需要在你的项目中添加以下引用,原作者已经建立了一个在线项目。请确保在你的项目中包含文件了c++和Java,这里有个链接你可以查看一下:EasyNDK
C++ 层面:
[cpp] view plain
#include "NDKHelper.h"

// 在cocos2dx中的按钮点击方法
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
//注册一个selector,那么当我们的native环境(java环境)调用这个字符串名字的函数(此处为名字为SampleSelector的函 数)的时候,这个selector可以响应请求
//注意:设置组名是为了在析构函数中能够清除掉selector
NDKHelper::AddSelector("HelloWorldSelectors",
"SampleSelector",
callfuncND_selector(HelloWorld::SampleSelector),
this);

// 为这个将要传递到native(也就是Java)语言中的消息设置参数
// 在c++中发送要调用的函数名
CCDictionary* prms = CCDictionary::create();
prms->setObject(CCString::create("SampleSelector"), "to_be_called");

// 最后在当前环境(c++)中调用native方法
SendMessageWithParams(string("SampleSelector"), prms);
}

// 一个回调选择器,native语言(java)将会调用它
void HelloWorld::SampleSelector(CCNode *sender, void *data)
{
CCLog("Called from native environment");
}

// 析构函数移除掉HelloWorldSelectors中的选择器(selectors)
HelloWorld::~HelloWorld()
{
// 移除相关联的选择器,因为我们将要销毁当前实例
NDKHelper::RemoveSelectorsInGroup("HelloWorldSelectors");
}

Java层面代码:

[cpp] view plain
/** 当activity第一次被创建调用*/
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

// 在主activity中,设置这个activity作为c++消息的接受者
AndroidNDKHelper.SetNDKReciever(this);
}

//实现这个被c++发送消息调用的方法
//确保这个方法的名字跟c++传递过来的字符串相同
// 比如我们从c++中传递"SampleSelector"字符串,这就是为什么我们创建这个方法的原因了
public void SampleSelector(JSONObject prms)
{
Log.v("SampleSelector", "传过来的参数是 : " + prms.toString());

String CPPFunctionToBeCalled = null;
try
{
CPPFunctionToBeCalled = prms.getString("to_be_called");
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("这是一个android层中的popup").
setTitle("Hello World!").
setNeutralButton("OK", null).show();

// 发送带参数的消息,仅仅当selector列表中有这个相同名字的函数,c++才会接受这些消息,
AndroidNDKHelper.SendMessageWithParameters(CPPFunctionToBeCalled, null);
}

为了跟其他JavaSDK相连接,比如微博SDK,FaceBook SDK等,你可以按照这些sdk的java指导说明,实现这些消息,并传递接口到cocos2dx层面调用,使之成为你自己的SDK。在cocos2dx中。我已经通过这种方法实现了APPCircle,Flurry和很多其他的SDK。

『伍』 如何将cocos2dx移植到eclipse上

1.准备三个工具:并解压放置在Documents目录下
a.Android开发环境包ADT 已经集成在Eclipse中,我的是adt-bundle-mac-x86_64-20130917mac下默认已经安装了JDK
b.Android NDK 即Android环境本地编译C++的包,用r8的,r9的貌似有问题 去网络空间下android-ndk-r8
c.cocos2d-x 开发包, 我的是cocos2d-x-2.1.4

2.添加全局变量vi ~/.bash_profile其中添加如下:路径不要有空格
export NDK_ROOT_LOCAL=/Users/user/Documents/android-ndk-r8
export NDK_ROOT=$NDK_ROOT_LOCAL
export ANDROID_NDK_ROOT=$NDK_ROOT

export ANDROID_SDK_ROOT=/Users/user/Documents/adt-bundle-mac-x86_64-20130917/sdk
export ANDROID_SDK_ROOT_LOCAL=$ANDROID_SDK_ROOT

export COCOS2DX_ROOT=/Users/user/Documents/cocos2d-x-2.1.4

export PATH=$ANDROID_NDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH

这样以后就不需要在create-android-project.shbuild_native.sh这两个脚本中再重新修改添加响应的路径了

3.直接cd 到cocos2d-x-2.1.4目录下并执行“./create-android-project.sh”根据提示输入相应的包名,项目名和版本号。
生成的项目会在cocos2d-x-2.1.4目录下(这里假设项目名为PPP),然后cd到 PPP/proj.android下,执行“./build_native.sh” 如此编译生成C++的相关静态库,有时某些头文件需要include 如:/Users/user/Documents/cocos2d-x-2.1.4/cocos2dx/platform/android/CCFileUtilsAndroid.h

4.打开Eclipse 导入刚刚生成的项目PPP,并修改AndroidManifest.xml中得icon名称,另外还需在Eclipse里导入cocos2d-x的两个工程库最终如下:
libcocos2dx 位于/User/users/Documents/cocos2d-x-2.1.4/cocos2dx/platform/android/java
libPluginProtocol 位于/User/users/Documents/cocos2d-x-2.1.4/plugin/protocols/proj.android

『陆』 如何在android平台上使用js直接调用Java方法

在Cocos2d-js 3.0beta中加入了一个新特性,在Android平台上我们可以通过反射直接在js中调用java的静态方法。它的使用方法很简单:
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回值。下面介绍的类名和方法签名可能会有一点奇怪,但是Java的规范就是如此的。

类名
参数中的类名必须是包含Java包路径的完整类名,例如我们在org.cocos2dx.javascript这个包下面写了一个Test类:

package org.cocos2dx.javascript;
public class Test {
public static void hello(String msg){
System.out.println(msg);
}
public static int sum(int a, int b){
return a + b;
}
public static int sum(int a){
return a + 2;
}
}

那么这个Test类的完整类名应该是org/cocos2dx/javascript/Test,注意这里必须是斜线/,而不是在Java代码中我们习惯的点。

方法名
方法名很简单,就是方法本来的名字,例如sum方法的名字就是sum。
方法签名
方法签名稍微有一点复杂,最简单的方法签名是()V,它表示一个没有参数没有返回值的方法。其他一些例子:
(I)V表示参数为一个int,没有返回值的方法;
(I)I表示参数为一个int,返回值为int的方法;
(IF)Z表示参数为一个int和一个float,返回值为boolean的方法;

现在有一些理解了吧,括号内的符号表示参数类型,括号后面的符号表示返回值类型。因为Java是允许函数重载的,可以有多个方法名相同但是参数返回值不同的方法,方法签名正是用来帮助区分这些相同名字的方法的。
目前Cocos2d-js中支持的Java类型签名有下面4种:
参数可以是0个或任意多个,直接使用js中的number,bool和string就可以。
使用示例
我们将会调用上面的Test类中的静态方法:
//调用hello方法
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "hello", "(Ljava/lang/String)V", "this is a message from js");
//调用第一个sum方法
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(II)I", 3, 7);
cc.log(result); //10
//调用第二个sum方法
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(I)I", 3);
cc.log(result); //5
在你的控制台会有正确的输出的,这很简单吧。
注意
另外有一点需要注意的就是,在android应用中,cocos的渲染和js的逻辑是在gl线程中进行的,而android本身的UI更新是在app的ui线程进行的,所以如果我们在js中调用的Java方法有任何刷新UI的操作,都需要在ui线程进行。
例如,在下面的例子中我们会调用一个Java方法,它弹出一个android的Alert对话框。

//给我们熟悉的AppActivity类稍微加点东西
public class AppActivity extends Cocos2dxActivity {
private static AppActivity app = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = this;
}

public static void showAlertDialog(final String title,final String message) {
//这里一定要使用runOnUiThread
app.runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog alertDialog = new AlertDialog.Builder(app).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
}
});
}
}

然后我们在js中调用
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showAlertDialog", "(Ljava/lang/String;Ljava/lang/String;)V", "title", "hahahahha");
这样调用你就可以看到一个android原生的Alert对话框了。

再加点料

现在我们可以从js调用Java了,那么能不能反过来?当然可以! 在你的项目中包含Cocos2dxJavascriptJavaBridge,这个类有一个evalString方法可以执行js代码,它位于frameworks\js-bindings\bindings\manual\platform\android\java\src\org\cocos2dx\lib文件夹下。我们将会给刚才的Alert对话框增加一个按钮,并在它的响应中执行js。和上面的情况相反,这次执行js代码必须在gl线程中进行。
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//一定要在GL线程中执行
app.runOnGLThread(new Runnable() {
@Override
public void run() {
Cocos2dxJavascriptJavaBridge.evalString("cc.log(\"Javascript Java bridge!\")");
}
});
}
});

这样在点击OK按钮后,你应该可以在控制台看到正确的输出。evalString可以执行任何js代码,并且它可以访问到你在js代码中的对象。

『柒』 新手,cocos2dx移植到android平台不知道怎么导入sqlite3库

创建windows平台项目 一、 搭建windows开发环境 官网上显示cocos2d-x支持win7、winxp、vista系统但我只在win7上用过以下说明均是在win7系统上的编译器使用vs2010。 1、 安装vs2010 2、 安装Visual Assist X可选 3、 执行build-win32.bat编译cocos2d-x 4、 运行cocos2d-x根目录下的install-templates-msvc.bat将cocos2d-x模板加入vs模板库。 5、将.\Debug.win32目录下的所有dll文件拷贝至Windows\system32\ (iconv.dll libcocos2d.dll libcocosDenshion.dll libcuri.dll libEGL.dll libgles_cm.dll libxml.dll pthreadVCE2.dll zlib1.dll )6、 双击cocos2d-win32.vc2010.sln进入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、在属性管理器中双击“Microsoft.Cpp.Win32.user”弹出属性页在里面设置VC++目录即可。这样该设置对所有VC项目都有效见下图。 6、在“包含目录”中, 加入下列项目 (D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\platform\third_party\win32) 7、在“库目录”中, 加入下列项目(D:\adroid\cocos2d-2.0x-2.0.3\Debug.win32)(发布时用release目录下的!!) 8、上面的第4、5、6、7条也可以通过如下方法解决: 定位到%USERPROFILE%\appdata\local\microsoft\msbuild\v4.0可以通过运行或直接在windows资源管理器的地址栏中输入使用其他文本编辑工具修改Microsoft.Cpp.Win32.user.props或Microsoft.Cpp.X64.user.props文件中的相关字段。以下是我的文件内容 <IncludePath>D:\android\cocos2d-2.0-x-2.0.3;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\include;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\platform;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\platform\win32;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\platform\third_party\win32\OGLES;D:\android\cocos2d-2.0-x-2.0.3\external\Box2D;D:\android\cocos2d-2.0-x-2.0.3\CocosDenshion\include;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\platform\third_party\win32;D:\android\cocos2d-2.0-x-2.0.3\cocos2dx\kazmath\include;$(IncludePath)</IncludePath><LibraryPath>D:\android\cocos2d-2.0-x-2.0.3\Debug.win32;$(LibraryPath)</LibraryPath> 第4至8条的作用是加入解决方案所依赖的头文件和库文件以保证项目的正常编译运行。 五、 如何删除vs里的cocos2d-x模板 1、 打开如下目录 (Example as default install) 1VS2008: C:\Program Files\Microsoft Visual Studio 9.0\VC\vcprojects\ 2VC2008Express: C:\Program Files\Microsoft Visual Studio 9.0\VC\Express\VCProjects 3VS2010: C:\Program Files\Microsoft Visual Studio 10.0\VC\vcprojects\ 4VC2010Express: C:\Program Files\Microsoft Visual Studio 10.0\VC\Express\VCProjects 2、 删除此目录下的 Cocos2d-x文件夹 3、 删除前缀为 CCAppWiz (0.8.0 or later) 或 CCXAppWiz (0.7.2 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\jdk1.6.0_20\bin; %JAVA_HOME%\D:\android\Java\jdk1.6.0_20\jre\bin; D:\android\Java\jre6\bin; 5、运行一次Cygwin.bat 6、修改\cygwin\home\用户名\.bash_profile文件添加NDK_ROOT=/cygdrive/d/android/android-ndk-r8b export NDK_ROOT 7、 修改\cocos2d-2.0-x-2.0.3\create-android-project.bat中的如下路径 set _CYGBIN=e:\cygwin\bin set _ANDROIDTOOLS=e:\android\android-sdk\tools set _NDKROOT=e:\android\android-ndk-r8 二、 新建android项目 1、 运行create-android-project.bat创建新的android项目例如项目名称为Cocos2dDemo。 2、 将win32下完成的.cpp和.h文件拷贝到\Cocos2dDemo\Classes 3、将win32下使用的资源拷贝到\Cocos2dDemo\proj.android\assets 4、将cpp文件的路径、使用的头文件的目录加入到Android.mk文件。 5、打开Cygwincd 到/Cocos2dDemo/proj.android目录下 6、执行./build_native.sh进行编译 7、在eclipse中编译打包。 三、 补充 1、2.0以上版本的引擎基本无法在android模拟器上运行建议在xcode和vs上调试好直接在真机上运行。 2、2.0以上版本的引擎要求android的开发和运行环境都要2.2以上的sdk。
将项目由win32移植到ios 一、 创建ios项目 1、 安装XCode 2、执行install-templates-msvc.bat将模板添加到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需要10.6及以上版本 2、IOS平台需要4.0及以上版本 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。

『捌』 cocos2dx移植到Eclipse 引用第三方jar包的问题

右击“项目”→选择Properties,在弹出的对话框左侧列表中选择Java Build Path,弹出如上图所示的对话框,这里选择"Add Library",弹出如下图所示对话框,选择"User Library",然后选择→Next

『玖』 如何在eclipse下调试cocos2dx

cocos2dx程序移植到eclipse
必要组件:
1.macos gcc编译器,若没有,在xcode->preference->downloads中下载command line tools(在命令行下输入g++,若显示command not found 则没有)
2. android sdk :本机目录为 /Users/zhangyao/IDE/android-sdk-macosx
3.cocos2d-x:本机目录为 /Users/zhangyao/Desktop/cocos2d-x-2.1.1
4.ndk 本机目录为 /Users/zhangyao/Desktop/android-ndk-re8
地址:http://developer.android.com/tools/sdk/ndk/index.html
选择macos 64bit
5.cdt 若没有 则在help->install new software中下载
Programming Languages->C/C++ Development Tools.

1.配置环境变量
终端中 输入 sudo vi ~/.bash_profile
输入i进入编辑环境 输入以下内容:
export COCOS2DX_ROOT=~/Desktop/cocos2d-x-2.1.1/
export NDK_ROOT=~/Desktop/android-ndk-r8e/
export ANDROID_SDK_ROOT=~/IDE/android-sdk-macosx/
export PATH=$PATH:$ANDROID_SDK_ROOT/tools
按下esc键退出编辑
输入:wq保存退出

2.在eclipse中创建项目(设项目名称为test)
cd Desktop/cocos2d-x-2.1.1
./create-android-project.sh
输入工程标志符com.cwa.test
选择android版本号:6
输入工程名:test
cd test/proj.android/
./build_native.sh

打开eclipse,选择file->new->other->Android->Android Project from Existing code->next->Browse->选择目录至cocos2d-x-2.1.4/test/project.android->finish

选择file->new->other->c/c++->convert to a c/c++ Project->next->选择上面建好的工程->finish

至此工程test创建完成
3.配置工程属性
右键工程名->properties
3.1 c/c++ Build 把use default build command的勾去掉,在build command中写(其中test为工程名):
bash ${workspace_loc:/test}/build_native.sh NDK_DEBUG=1 V=1

3.2 点开c/c++ Build 选择Environment->add
name:NDK_ROOT
value:/Users/zhangyao/Desktop/android-ndk-r8e

3.3 c/c++ General->Path and Symbols->add
/Users/zhangyao/Desktop/android-ndk-r8e/sources/cxx-stl/system/include

全部修改完,点OK
在GUN C++中加入
/Users/zhangyao/Desktop/cocos2d-x-2.1.1/cocos2dx/include
/Users/zhangyao/Desktop/android-ndk-r8e/platforms/android-14/arch-arm/usr/include

在Android中 最好选择最新的Android4.2.2(确保Andorid模拟机中已经下载好了4.2.2的API)

4.打开项目的AndroidMainfest.xml
把android:icon="@drawable/icon">一行改为android:icon="@drawable/ic_launcher">
android:minSdkVersion="8"
把8改成14
android:minSdkVersion="14"
关闭AndroidMainfest.xml save changes选yes
在src/org.cocos2dx.lib/Cocos2dxActivity.java中
在// ...add to FrameLayout
framelayout.addView(this.mGLSurfaceView);
这句后面加上一句(如果没有):
this.mGLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);

打开工程jni目录下的Android.mk
MY_CPP_PATH := $(LOCAL_PATH)/ \
$(LOCAL_PATH)/../../Classes/
MY_FILES_SUFFIX := %.cpp
My_All_Files := $(foreach src_path,$(MY_CPP_PATH),$(shell find $(src_path)/.))
My_All_Files := $(My_All_Files:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)
MY_CPP_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
MY_CPP_LIST := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES := $(MY_CPP_LIST)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$)
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES:$(LOCAL_PATH)/%:=$(LOCAL_PATH)/%)

把cocos2d-x引擎的根目录的cocos2dx/platform/android/java/src文件夹下org文件夹 复制到项目的src包(test/proj.android/src)下替换org文件夹

5.把xcode中所有的自建的类文件(包括.h和.cpp)复制到cocos2d-x-2.1.1/test/Classes
所有的资源文件复制到cocos2d-x-2.1.1/test/Resources
工程的图标文件放在cocos2d-x-2.1.1/test/res下的文件夹中

至此工程配置完毕。
在对工程作出修改,比如加入/替换新的资源文件,class后,最好对工程clean一下,如果clean后还出现问题,可以重新执行一下build_native命令。

Test 的 模拟器配置

最后,执行以下步骤可以把xcode和eclipse相关联,让在xcode中做的更改,eclipse可以自动做出更改。
1.打开Xcode中的test项目(项目名和eclipse中的相同)
选择classes分组,点删除,选择Move to Trash
2.在工程中添加新group,还命名为classes,右键classes->addFIles
然后把cocos2dx/test/classes中的类都添加回来,这样eclipse和xcode就公用了这些文件,在一个中做出更改,另一个里就会自动更改,如下图:

另:1. Android联网
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.android中的R文件 ,是伴随着加入资源等自动更新的
Android 在开发中会自动生成一个 R.java 文件 ,这个文件是自动生成的,最好不要去改。不过有时候这个 java 文件会跟我们捉迷藏,在程序中 R.xx.xxx 会出现经常报错现象。
1 对着工程点击鼠标右键 选择 Build Project,R.java 文件又回来。这样R.xx.xxx 就能 X 的出来了。

如果不行 试用第二种 方法

2 选择eclipse/myeclipse 的 clean 这样R文件也会出现
如果还不行 试用第三种

3 经过上面两种方法都不行 使用绝招 从别的工程中拷贝一份R文件过来 然后string.xml里随便改动一下 即可更新R文件
如果还不行 试用第四种

4 经过上面的3种方法都不行 说明我们的工程有问题 好好检查吧
比如resoure资源中的文件 命名,例result_main.xml,如果写成Result_main.xml是错误的 需要全部小写

『拾』 android和cocos2dx可以互调吗

在cocos2dx里访问/互调android里的activity方法/变量
不得不感叹下COCOS2DX的强大。。同一份游戏代码不加改动的可以放到android和iphone上面。
而最近在往ANDROID上放的时候,需要集成其它非官方运营渠道的API,而对方提供的API是jar包。所以需要在cocos2dx C++源文件中调用JAVA的API,因此有了以下DEMO代码:

activity里有如下定义:

Java代码

public void cppCall_nonStatic_logsth(){
//非静态方法
Log.i("cppCall_nonStatic", "test2~~~~!!!");
}

public static Object cppCall_logsth(){
//静态方法
Log.i("cppCall", "test~~~~!!!");
return activity;
}

AppDelegate.cpp里:
加上预定义(for android)

C++代码
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include <JniHelper.h>
#include <android/log.h>

#if 1
#define LOG_TAG "JniHelper"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#else
#define LOGD(...)
#endif

#endif

关键代码片段:

C++代码
JniMethodInfo minfo;
jobject jobj;
bool b = JniHelper::getStaticMethodInfo(minfo,
"com/loy/puzzles/Puzzles", //类路径
"cppCall_logsth", //静态方法名
"()Ljava/lang/Object;"); //括号里的是参数,后面的是返回值。
if (!b) {
LOGD("JniHelper::getStaticMethodInfo error...");
}else{
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
}

JniHelper::getMethodInfo(minfo,
"com/loy/puzzles/Puzzles",
"cppCall_nonStatic_logsth",
"()V");
if(!b){
LOGD("JniHelper::getMethodInfo error...");
}else{
LOGD("ready to invoke method...");
minfo.env->CallVoidMethod(jobj, minfo.methodID);
}
最终LOGCAT打印日志如下:
12-29 12:46:33.891: D/JniHelper(2008): testing~~~
12-29 12:46:33.891: I/cppCall(2008): test~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): ready to invoke method...
12-29 12:46:33.891: I/cppCall_nonStatic(2008): test2~~~~!!!
12-29 12:46:33.891: D/JniHelper(2008): testing over~~~
即表示调用成功。

阅读全文

与cocos2dxjava传值相关的资料

热点内容
苹果手机可以把文件传到华为吗 浏览:63
海川化工下载的文件默认到哪里 浏览:343
学唱粤语歌app 浏览:975
qq游戏生死狙击玩不了 浏览:120
win10邮件不显示图片 浏览:922
口袋妖怪所有版本下载 浏览:504
我们身边都有哪些大数据例子 浏览:25
震旦adc307扫描的文件在哪里 浏览:999
图片打开变成文件 浏览:194
松下微单电脑传文件软件 浏览:574
苹果蓝牙键盘surface 浏览:170
mindmaplinux 浏览:733
oppo手机怎么连接电脑传输数据 浏览:624
word删除尾注分隔符 浏览:773
公告质疑需要哪些文件 浏览:608
数据库模型是干什么的 浏览:404
win10的驱动怎么安装驱动 浏览:320
word文件水印怎么取消 浏览:443
rhel6的镜像文件在哪里下载 浏览:571
成功正能量微信头像 浏览:848

友情链接