请原谅总的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函数用于调试,并且可以正常工作。但是print self.id不起作用。我期待它给我一些东西(我应该按照循环中的定义)。它返回'nil'。
我尝试将spawn循环更改为:
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并帮助我,我真的很感激。 :-)
答案 0 :(得分:2)
试试这个:
local thingy = {}
local positionSpacing = 55
function tapHandler(event)
print(event.target.name)
end
for i=1,6,1 do
thingy[i] = display.newImageRect("Icon.png", 50, 50, true);
thingy[i].x = (positionSpacing * i) - (positionSpacing / 2);
thingy[i].y = display.contentCenterY;
thingy[i].name = ("thingy"..i);
thingy[i]:addEventListener("tap",tapHandler)
end
继续编码...............