假设我想创建一个模块来说明一组GUI控件,我将如何创建一个可以加载所有GUI脚本的模块,我应该将这些脚本作为模块本身?我想有一个这样的系统:
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")
Run Code Online (Sandbox Code Playgroud)
那么所有运行的文件都会将它们设置的变量作为bgui模块的一部分吗?Aka如果在control.lua中,我control = {...}会将它定义为bgui.control,还是应该将control.lua作为一个模块本身,就像module("bgui.control")我想要的那样?
对不起,如果不是很清楚,不得不急着写,谢谢:)
假设我有"地址"属性,如何在表单设计器的属性框中输入它,就像文本框的文本输入一样,如下所示:

?
假设我有一个字符串"text",一个插入位置"插入符号",然后想要找到当前的单词(按空格分隔).
我目前的做法似乎效率低下,我想知道是否有人有一个有效的方法吗?
const char* text;
int caret;
int initpos;
int start;
int count = 0;
char word[256];
// text and caret values assigned here.
initpos = caret;
while(caret > 0 && text[caret] != ' ') // get start
{
caret--;
count++;
}
start = caret;
caret = initpos;
while(text[caret] && text[caret] != ' ') // get end
{
caret++;
count++;
}
word = strsub(text, start, count);
Run Code Online (Sandbox Code Playgroud) 在我的程序中,我正在读取并解析文件以获取资源.
我提取一个表示资源类型的字符串,执行一个简单的if then else语句来检查它是否与任何已知类型匹配,如果不匹配则抛出错误:
if(type.toLowerCase() == "spritesheet") {
_type = ResourceType.Spritesheet;
} else if(type.toLowerCase() == "string") {
_type = ResourceType.String;
} else if(type.toLowerCase() == "texture") {
_type = ResourceType.Texture;
} else if(type.toLowerCase() == "num") {
_type = ResourceType.Number;
} else {
throw new Exception("Invalid Resource File - Invalid type: |" + type.toLowerCase() + "|");
}
Run Code Online (Sandbox Code Playgroud)
忽略我的错误命名和非描述异常,这个语句总是转到最后的其他语句,即使从文件中读入类型IS"spritesheet"等.
java.lang.Exception: Invalid Resource File - Invalid type: |spritesheet|
at Resource.Load(Resource.java:55) //Final else.
Run Code Online (Sandbox Code Playgroud)
如果我在此调用之前将类型设置为"spritesheet",它可以工作,所以我想知道它是否是某种编码错误或其他什么?
我在java中没有做太多工作所以我可能会遗漏一些简单的东西:)