Corona SDK - 我们如何将外部函数连接到main.lua?
2013-3-16 2:58:0
收藏:0
阅读:135
评论:2
现在我们的所有代码都集中在main.lua中。我们不想使用面向对象的代码,但仍然希望将不同的对象拆分为单独的文件。
在我们的main.lua文件中,我们有水、船、男孩、岛和云等对象 - 所有这些都创建了一个大的代码块。我们希望将“BEGIN WATER 3”放在自己的lua文件中,并能够通过一个简单的函数在main.lua中执行该代码。怎么做呢?
这里是我们main.lua文件的一个示例,显示“water3”:
原文链接 https://stackoverflow.com/questions/5966811
点赞
stackoverflow用户312586
在此回答中,我会尝试实现您想要的功能。请记住我从未使用过CoronaSDK,所以可能需要一些调试。
首先,这里有一个名为create.lua的文件。您应该将其放在与main.lua相同的目录中。
create.lua
的主要目标是构建一个名为create
的表。该表仅具有一个用于创建水的函数;您可以稍后添加更多函数,例如用于创建地面。
-- 文件 'create.lua'
local function water(game,x,y,xScale,imagePath,soundPath)
local image = display.newImage( imagePath )
game:insert( image )
image.x, image.y, image.xScale = x, y, xScale
local w,h = display.contentWidth, display.contentHeight
-- 创建两个空局部变量,并将函数分配给它们
local loopar, loopar2
loopar = function() transition.to(image, {time=2300, x=(400), y=(h-140), transition=easing.inOutQuad, onComplete=loopar2}) end
loopar2 = function() transition.to(image, {time=2200, x=(w-500), y=(h-120), transition=easing.inOutQuad, onComplete=loopar}) end
-- 开始移动
transition.to(image, {time=2300, x=(w-400), y=(h-140), transition=easing.inOutQuad, onComplete=loopar})
local sound = media.newEventSound(soundPath)
image:addEventListener("touch", function() media.playEventSound(sound) end )
end
local create = { water = water }
return create
在main.lua中,为了能够使用create.water,首先必须访问该create
表;您可以使用require
来实现。像这样:
-- 文件 'main.lua'
local create = require 'create'
<在此处放置创建'game'组的代码>
create.water(game, 619, 500, 2, "water3.png", "waves.wav")
请注意,create.water接收参数。现在您可以更轻松地更改参数:
create.water(game, 200, 100, 2, "water3.png", "waves.wav") -- 其他初始坐标
create.water(game, 619, 500, 1, "water3.png", "waves.wav") -- scaleX = 1
create.water(game, 619, 500, 1, "water.png", "waves.wav") -- 其他水图像
问候!
2011-05-11 21:35:31
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
我很确定你可以在 Corona 中使用 Lua 的
require
函数。最简单的方法是:
1)你可以在文件中创建你想要的本地函数(假设我们叫它 extra.lua)。
local function f1(...) ... end local function f2(...) ... end
2)在函数之后,你可以创建一个包含所有要“共享”的函数的表。通常这个表的名称与文件名相同,所以我将我的命名为
extras
:local extras = { f1 = f1, f2 = f2 }
这种写法可能看起来很奇怪。它实际上是创建了一个名为
extras
的表,里面有一个名为f1
的字段,指向局部函数f1
。换句话说,调用f1(1, 2, 3)
的效果与调用extras.f1(1, 2, 3)
相同。3)在文件的末尾返回表:
return extras
4)现在在
main.lua
中,你可以像这样使用在extras
中定义的函数:local extras = require 'extras' extras.f1(1, 2, 3) extras.f2(4, 5, 6)
希望这可以帮助你!祝你好运!