【问题标题】:change things from a required lua file, corona sdk从所需的 lua 文件 corona sdk 更改内容
【发布时间】:2018-04-29 14:48:34
【问题描述】:

当我需要一个file1时,我可以将值、数据或对象导出到file2,但是file2不能导出到file1

(这里的“文件”是指lua文件,例如Scene1.lua、Data.lua)

如何从 file2 导出到 file1,反之亦然?

示例代码

Data.lua (file1)

--data.lua

local M = {}

local money = 500
local moneyText = display.newText("Money: " .. money, 
display.contentCenterX, display.contentCenterY, "calibri", 50)

M.moneyText = moneyText
M.moneyData = money

return M

文件2

 --file2.lua

local Data = require("data")

local moneyText2 = Data.moneyText
local moneyData = Data.moneyData

local function addSomeValue()
moneyData = moneyData + 1
end

timer.performWithDelay(1000, addSomeValue, 0)

【问题讨论】:

  • 您不会从 file1 导出数据,而是加载并运行在 file1 中编写的代码。你到底想达到什么目的?我敢肯定你对它的工作原理有一些误解。
  • 哦,我还以为用 require 导出了 file1,没有加载,我想从 file2 更改 file1 中的货币值,我该怎么做?

标签: lua coronasdk require


【解决方案1】:
local Data = require("data")

或多或少等同于

function chunkFromDataLua()

  local M = {}

  local money = 500
  local moneyText = display.newText("Money: " .. money, 
  display.contentCenterX, display.contentCenterY, "calibri", 50)

  M.moneyText = moneyText
  M.moneyData = money

  return M

end

local Data = chunkFromDataLua()

Data 现在引用表 M

local money = 500
M.moneyData = money

只创建money的副本并将其存储在M中。因此更改M.moneyData不会影响money。因此更改 Data.moneyData 也不会影响金钱。

除此之外

local moneyText = display.newText("Money: " .. money, 
  display.contentCenterX, display.contentCenterY, "calibri", 50)

此时使用money 的值创建一个带有静态文本的显示对象。因此,在此之后更改 money 的值不会更改文本显示的内容。您必须更改 Data.moneyText.text 才能做到这一点。

【讨论】:

    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2015-01-17
    • 2012-05-08
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多