怎么解决重复c 对象导入lua lua

主题 : 怎么解决重复导入 .lua ?
级别: 新手上路
可可豆: 57 CB
威望: 57 点
在线时间: 152(时)
发自: Web Page
来源于&&分类
怎么解决重复导入 .lua ?&&&
--MainScene.lua代码: local HomePageUL = import(&.HomePageUL&)--HomePageUL.lua代码: local MainScene = import(&.MainScene&)error: loop or previous error loading module 'app.scenes.MainScene'我想 MainScene.lua 和 HomePageUL.lua 通用,该怎么解决呢?-- PS: 类似 coco2dx 的做法  #include &MainScene.h&; 和 class HomePageUL; [ 此帖被qixuanzeng在 22:37重新编辑 ]
级别: 侠客
UID: 344308
可可豆: 405 CB
威望: 380 点
在线时间: 198(时)
发自: Web Page
没办法只能声明全局了..
级别: 侠客
UID: 344308
可可豆: 405 CB
威望: 380 点
在线时间: 198(时)
发自: Web Page
或者专门弄一个单例出来把东西保存在里面.作为中转.两个文件都能对它进行调用.
级别: 新手上路
可可豆: 57 CB
威望: 57 点
在线时间: 152(时)
发自: Web Page
回 2楼(pk) 的帖子
嗯好。。谢谢
级别: 新手上路
可可豆: 126 CB
威望: 126 点
在线时间: 82(时)
发自: Web Page
为什么不允许互相引用啊?
关注本帖(如果有新回复会站内信通知您)
个人IDP证书一年费用? 正确答案:99美金
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版今天看啥 热点:
C++调用Lua,调用lua
转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/
我使用的cocos2d-x版本是2.3.3,先在一个C++工程中配置好lua的环境。
首先导入lua项目
1.liblua工程是cocos2d-x-2.2.3\scripting\lua\proj.win32\liblua.vcxproj这个文件,导入VS2010工程中
2.包含目录:在工程的属性-配置属性-C/C++-常规-附加包含目录中加入$(ProjectDir)..\..\..\scripting\lua\tolua,$(ProjectDir)..\..\..\scripting\lua\lua,
$(ProjectDir)..\..\..\scripting\lua\lua
3.在属性-配置属性-链接器-输入-附加依赖项加入liblua.lib和lua51.lib
好了,lua环境就配置好了
在HelloWorld.cpp中加入头文件引用#include &CCLuaEngine.h&,#include &script_support\CCScriptSupport.h&
下面开始写lua了,lua代码如下
pageName=&equip&
a={student=&zhangsan&,age=23}
function main()
print(&leoooooooooooooo&)
function printSomething(name,age)
print(&-----------------name is &..name)
print(&-----------------age is &..age)
function returnSomething(name,age)
return name,age
这个写的lua代码,下面看C++部分,首先在AppDelegate.cpp中加入
CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
CCScriptEngineManager::sharedManager()-&setScriptEngine(pEngine);来设置lua的引擎
然后在HelloWorld.cpp的点击事件中将lua代码加载
CCLuaEngine *pEngine = CCLuaEngine::defaultEngine();
pEngine-&executeString(&require \&lua/hello.lua\&&);
下面主要说3个知识点
1.调用lua的函数
//调用无参数无返回值的函数
lua_State* L=pEngine-&getLuaStack()-&getLuaState();
//获得栈顶,并且保存值
int top=lua_gettop(L);
lua_getglobal(L,&main&);
//看看在不在那里
if(!lua_isfunction(L,-1))
CCLog(&------------return&);
//第一个参数是栈的状态的指针,第二个参数是参数个数,第三个参数是返回值的个数,第四个参数是出现错误的回调函数的地址
lua_pcall(L,0,0,0);
lua_settop(L,top);
//调用有参数,无返回值的函数
top=lua_gettop(L);
lua_getglobal(L,&printSomething&);
//看看在不在那里
if(!lua_isfunction(L,-1))
CCLog(&------------return&);
//一一对应啊
lua_pushstring(L,&zhycheng&);
lua_pushnumber(L,24);
lua_pcall(L,2,0,0);
lua_settop(L,top);
//调用有参数,有两个返回值的函数
top=lua_gettop(L);
lua_getglobal(L,&returnSomething&);
if(!lua_isfunction(L,-1))
CCLog(&------------return&);
lua_pushstring(L,&new&);
lua_pushnumber(L,22);
lua_pcall(L,2,2,0);
if(!lua_isnumber(L,-1)||!lua_isstring(L,-2))
CCLog(&return error&);
//name在下面
int age =(int)lua_tonumber(L,-1);
const char* name=lua_tostring(L,-2);
CCLog(&age is %d&,age);
CCLog(&name %s&,name);
lua_settop(L,top);
2.获得lua的一个全局变量的值
//读取lua的全局变量
top=lua_gettop(L);
lua_getglobal(L,&pageName&);
if(!lua_isstring(L,-1))
CCLog(&return error&);
const char* equipname=lua_tostring(L,-1);
CCLog(&name is %s&,equipname);
lua_settop(L,top);
3.访问全局table的某一个值
//获取lua表中的某个key的value
top=lua_gettop(L);
lua_getglobal(L,&a&);
if(!lua_istable(L,-1))
CCLog(&error----------------&);
lua_pushstring(L,&student&);
//lua_gettable是一个函数,它首先让键值出站,获取相应表元素的值,然后把这个值入栈
//此时student在-2的位子,然这个key出栈,让他的值入栈
lua_gettable(L,-2);
if(!lua_isstring(L,-1))
CCLog(&error --------------&);
const char* studentName = lua_tostring(L, -1);
CCLog(&studentName is %s&,studentName);
lua_settop(L,top);
//再获取的时候一定要注意栈的问题
//获取年龄
top=lua_gettop(L);
lua_getglobal(L,&a&);
if(!lua_istable(L,-1))
CCLog(&error----------------&);
lua_pushstring(L,&age&);
lua_gettable(L,-2);
if(!lua_isnumber(L,-1))
CCLog(&error-----------------&);
int aage=lua_tonumber(L,-1);
CCLog(&aage is %d&,aage);
lua_settop(L,top);
好了,就说这么多,对于栈的操作,可以从-1开始,也可以从1开始,从-1开始的话,就是从栈顶往下,从1开始就是从栈底向上。
下载资源:http://download.csdn.net/detail/zhy_cheng/7999945
你使用的是哪个lua 版本????我用的是 lua 5.2 ,在 codeblock 下编译的。你的描述和源代码不符合。printf(&%d \n&,(int)lua_tonumber(m_pState,1));应该显示 0 。 lua堆栈中 index 1 =& add函数index 2 =& 1index 3 =& 2所以那句代码试图把lua函数转换成为数字。应该得到0 。后面一句应该得到3 。你说你的结果是 2 0 。应该不会。除非你贴出来的代码,和实际编译的代码不同。
能不能贴出你的关键代码?否则无法知道是你的使用方法错了还是一些小的细节问题导致功能没实现。
相关搜索:
相关阅读:
相关频道:
Android教程最近更新怎么解决重复导入 lua_百度知道
怎么解决重复导入 lua
提问者采纳
确保不会重复.preload表中,lua会记录到 不会重复导入lua文件;模块名&quot使用 require &quot
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎么解决重复导入 lua_百度知道
怎么解决重复导入 lua
提问者采纳
用 require &模块名& 不会重复导入lua文件,lua会记录到package.preload表中,确保不会重复
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
其他类似问题
为您推荐:
lua的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 lua 不重复随机数 的文章

 

随机推荐