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

cocos2dx-3.7版本lua程序入口在哪,第1张

一、主要分为两个大步骤,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/StringI)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 luajTest123456789101112131415161718192021222324

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 MainScene1234567891011121314151617181920212223242526272829

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

4.到此,修改完成。构建apk,安装到手机中,看Log.

如果看到以下Log,证明你的Luaj成功调用了java代码了。

用xcode来开发cocos2dx,结果发现一个很纠结的问题,如果我一旦修改了一个Lua文手闭件,我必须clean之氏行后再build,否则修改的Lua文件不会体现出来。这是一个很令纠结的结果,特别是我要进行调试的时候,在网上搜索了一圈,发现xcode原来可以提供一个build phase的功能,允许在build中间执行一些脚本,而这个时候只要将脚本文件touch一下就可以解决问题,但是比较奇怪的是,如果是touch Resources文件是不行的,必须touch Resources目录下毕核裂的某个文件。

每用一个新的ide总会有学习代价,现在觉得如果要开发cocos2dx+lua,Linux其实是最好的开发环境,原因是如果在不修改cpp的情况下,

只需要用一个编辑器去写lua即可,然后立即重启程序就行了,而android或者ios都需要模拟器,win32直接忽略了;奈何现在换成了mac,没办法了,不过还好mac的模拟器足够快,不像android。

那么你就需要提供给 IDE 几个 Android 编译需要用到的工具。

运行、测试游戏

1. 新建一个名为 CocosLuaGame 的 Cocos Lua 工程

2,选择你刚刚下载的 Cocos2d-ee 3,Windows上的流程和这里所介绍的几乎一样。如果你想要在其他我们支持的目标平台上调试程序。

额外设置

假设你发现我们提供给你的预编译的Android runtime不能满足你的要求,不再赘述.ee 作为 Lua Framework。漏笑基

先决条件

如果你还没有安装Cocos Code IDE. 点击工具栏上的Debug按钮

3. 默认情况下脚本会运行在我们提供的 Mac 版本预编译 runtime 上,请参考《如何安装和设置Cocos Code IDE》

IDE配置

基础设置

打开工具的 Preferences 页Lua 子页面,切换到 Cocos/,在 Mac 上你可以调试Mac支持调试的环境

在 Windows 上你可以调试Windows和Android游戏、iOS和Android游戏。为了简单起见,你就需要重新定制。我们以 Mac 作为开发环境来演示 Code IDE 的使用,我们不对默认值进行任何改动。这可以通过打开返谨 Preferences/Cocos 页面进行配升首置


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12231004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存