请原谅总 n00b 的问题。我是 Corona SDK 的新手(和一般的编程,除了一些 VB 和阅读 Frank Zammetti 的优秀书籍),我遇到了一个问题。在尝试了几件事并进行了广泛的搜索之后,我就是无法理解这个......
背景:作为一项学习练习,我正在尝试编写一个有六个“东西”的游戏。每个事物都将根据随机属性获得一个“分数”,得分最高的事物将是“正确”的选择。用户将点击他们的选择,然后他们会被告知他们是否选择正确。
我正在研究我的“绘图级别”功能,该功能将产生这些东西。此功能应在屏幕上生成 6 个图像,然后通过点击使这六个图像中的每一个都可识别。这是我写的代码:
for i=1,6,1 do
thingy[i] = display.newImageRect("graphics/thingy.png", 67, 122, true);
thingy[i].name = ("thingy"..i);
thingy[i].id = i;
thingy[i].x = (positionSpacing * i) - (positionSpacing / 2);
thingy[i].y = display.contentCenterY;
table.insert(thingy[i], gc.gameDG);
print(thingy[i].name.." "..thingy[i].x.." index "..thingy[i].id); --for debug
thingy[i]:addEventListener("tap", gc.positionTapped);
end
这会愉快地在屏幕上创建事物。所以我定义了一个函数来对物体的点击做出反应:
function gc:positionTapped(event)
utils:log(sceneName, "positionSelected()");
print(self.id);
end
utils:log 函数用于调试,并且可以正常工作。但是打印 self.id 不起作用。我希望它能给我东西 id(应该是循环中定义的 i )。它返回“零”。
我尝试将生成循环更改为:
for i=1,6,1 do
thingy[i] = display.newImageRect("graphics/thingy.png", 67, 122, true);
thingy[i].name = ("thingy"..i);
thingy[i].id = i;
thingy[i].x = (positionSpacing * i) - (positionSpacing / 2);
thingy[i].y = display.contentCenterY;
table.insert(thingy[i], gc.gameDG);
print(thingy[i].name.." "..thingy[i].x.." index "..thingy[i].id); --for debug
thingy[i]:addEventListener("tap", gc:positionTapped);
end
并且循环因“预期附近的函数参数”而崩溃
所以我再次将其更改为:
for i=1,6,1 do
thingy[i] = display.newImageRect("graphics/thingy.png", 67, 122, true);
thingy[i].name = ("thingy"..i);
thingy[i].id = i;
thingy[i].x = (positionSpacing * i) - (positionSpacing / 2);
thingy[i].y = display.contentCenterY;
table.insert(thingy[i], gc.gameDG);
print(thingy[i].name.." "..thingy[i].x.." index "..thingy[i].id); --for debug
thingy[i]:addEventListener("tap", gc:positionTapped());
end
它因“运行时错误断言失败!”而崩溃。在循环期间,如下所示:
thingy[i]:addEventListener("tap", gc.positionTapped(thingy[i].id));
也是如此:
thingy[i]:addEventListener("tap", gc.positionTapped(i));
我已经阅读和谷歌搜索了三天,仍然找不到答案。如果您能同情n00b并帮助我,我将非常感激。:-)