我如何在外部库的函数内部访问或调用全局函数?

我有一个类似这样的示例类:

   --An External Library --UI.lua
    UI = {}
   function UI: new()
    local Group = display.newGroup;

    local inventory_frames = display.newImage("inventorybox.png") ;
    Group :insert( inventory_frames) ;

    function inventory_framesDown()

      local tr_down = transition.to(inventory_frames,{time = 150,alpha = 0, x=0 ,y =8})

    end

    return Group
    end
    return UI

现在,从我的实际场景.lua(使用storyboard API)从corona。

1.local ui = require“UI.lua” 在我的创建场景函数中(我没有将其放在组场景中的原因是因为我想手动使其消失)

local UI2 = UI: new()

然后在我的退出场景函数中。我希望从UI:new()内部调用函数inventory_framesDown()。

function scene:exitScene(e)

invent = UI:new() inventory_framesDown() --this dose not work

storyboard.purgeScene("scene2");
storyboard.removeAll()

end

那么如何从外部库中的全局函数中调用全局函数? 提前致谢:)

点赞
用户1621521
用户1621521

基本上;

-- 一个外部库 -- UI.lua

UI = {}

function UI:new()
  local Group = display.newGroup;
  local inventory_frames = display.newImage("inventorybox.png") ;
  Group:insert(inventory_frames);
  
  function Group:inventory_framesDown() -- 我像这样重写了代码。
    local tr_down = transition.to(inventory_frames, {time = 150, alpha = 0, x = 0, y = 8})
  end

  return Group
end

return UI

然后在我的 Scene.lua 中引用库后,在创建场景函数中我写了 local UI2 = UI:new(),然后:

function scene:exitScene(e)
  UI2.inventory_framesDown() -- 这个有效
  storyboard.purgeScene("scene2");
  storyboard.removeAll()
end

我还有点困惑,为什么这个代码可行?因为有这么多创建类和对象的方式。如果您有更好的解决方案,我想知道。再次感谢。

2012-10-01 14:57:17