2010-10-03 4 views
1

Dites que je veux faire un module pour dire un ensemble de contrôles GUI, comment créer un module qui chargerait tous les scripts de l'interface graphique, et devrais-je mettre ces scripts en tant que modules eux-mêmes? Je pensais d'avoir un système comme celui-ci:Lua - Question sur les modules

module("bgui", package.seeall) 

dofile("modules/bgui/control.lua") 
dofile("modules/bgui/container.lua") 
dofile("modules/bgui/screenmanager.lua") 
dofile("modules/bgui/form.lua") 
dofile("modules/bgui/button.lua") 
dofile("modules/bgui/textbox.lua") 
dofile("modules/bgui/label.lua") 

Est-ce que tous les fichiers ont alors exécuter les variables qu'ils fixent dans le cadre du module bgui? Aka si dans control.lua j'avais control = {...} serait-il défini comme bgui.control ou devrais-je faire le control.lua un module lui-même, quelque chose comme module("bgui.control") cela fonctionnerait-il comme je l'ai prévu?

Désolé si ce n'est pas très clair dû écrire dans une course, merci :)

Répondre

7

Vous posez en fait deux questions. Le premier est "est-ce que cette façon de charger beaucoup de fichiers sur un module est ok?"

La réponse est - oui. C'est une sorte de standard non-dit d'appeler ce fichier mymodule/init.lua. La plupart des gens ont? /init.lua inclus sur leur chemin, vous pouvez donc écrire require('modules/bgui') et init.lua sera chargé automatiquement.

Cela dit, vous pouvez supprimer une duplication de code en utilisant une table temporaire et une boucle:

# modules/bgui/init.lua 
local files = { 
    'control', 'container', 'screenmanager', 'form', 'button', 'textbox', 'label' 
} 
for _,file in ipairs(files) do dofile("modules/bgui/" .. file .. ".lua") end 

La deuxième question est « sont des objets définis sur un seul fichier disponible sur bgui? ». La réponse est également oui, tant que le fichier définissant la variable est "terminé" (avec dofile ou require) avant le fichier utilisant la variable.

+0

Merci beaucoup, je n'arrive pas à trouver beaucoup de documentation sur les modules lua et cela aide une tonne. – Blam