Corona SDK - 我们如何将外部函数连接到main.lua?

san*_*dra 2 mobile lua function coronasdk

现在我们将所有代码都收集在main.lua中.我们不想使用面向对象的代码,但仍然找到一种将不同对象拆分为单独文件的简单方法.

在我们的main.lua文件中,我们有像水,船,男孩,岛屿和云这样的对象 - 所有这些都创造了一大堆代码.我们希望在它自己的lua文件中有"BEGIN WATER 3",并且能够使用简单的函数在main.lua中执行该代码.我们怎么做?

这是一个来自main.lua文件的例子,显示"water3":

--------------- BEGIN WATER 3 ---------------------------------------------------------

local watere = display.newImage( "water3.png", true )
game:insert( watere )
watere.y = 619
watere.x = 500
watere.xScale = 2

--water sound
local wavesound5 = media.newEventSound("waves.wav")

local function playWave5 (event)
  media.playEventSound(wavesound5)
end

local w,h = display.contentWidth, display.contentHeight

local function callbackFunc()
  print( "Transition 1 completed" )
end

local function mainwater(watere)
end

function loopar()
  local myTween = transition.to(watere, {time=2300, x=(400), y=(h-140), transition=easing.inOutQuad, onComplete=loopar2})
end

function loopar2()
  local myTween = transition.to(watere, {time=2200, x=(w-500), y=(h-120), transition=easing.inOutQuad, onComplete=loopar})
end

local listener2 = function()
  print( "Transition 2 completed" )
end

local myTween = transition.to(watere, {time=2300, x=(w-400), y=(h-140), transition=easing.inOutQuad, onComplete=loopar})

watere:addEventListener("touch", playWave5)

---------------- END WATER 3 ---------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

kik*_*ito 5

我很确定你可以在Corona中使用Lua的require函数.

最简单的使用方法如下:

1)您可以在文件中创建任意数量的本地函数(让我们称之为extra.lua)

local function f1(...)
  ...
end

local function f2(...)
  ...
end
Run Code Online (Sandbox Code Playgroud)

2)在函数之后,您构建一个具有您想要"共享"的所有函数的表.这个表就像文件一样调用很常见,所以我会称之为extras:

local extras = {
  f1 = f1,
  f2 = f2
}
Run Code Online (Sandbox Code Playgroud)

这种表示法可能看起来很奇怪.它正在做的是创建一个表,在其中调用extras一个字段f1,指向本地函数f1.换句话说,呼叫f1(1,2,3)与呼叫相同extras.f1(1,2,3)

3)返回文件末尾的表:

return extras
Run Code Online (Sandbox Code Playgroud)

4)现在main.lua你可以使用额外的定义函数,如下所示:

local extras = require 'extras'

extras.f1(1,2,3)
extras.f2(4,5,6)
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!祝好运!