使用单独侦听器生成对象的 Corona
2014-10-20 13:7:43
收藏:0
阅读:67
评论:1
请原谅这个超级初级的问题。我是 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)。它返回“nil”。
我尝试将生成循环更改为:
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));
我已经阅读并搜索了三天,仍然找不到答案。如果您可以怜悯一个新手并帮我解决问题,我将不胜感激。 :-)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
本地变量 thingy = {} 本地变量 positionSpacing = 55 函数 tapHandler(event) 打印(event.target.name) end 对于 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继续编写代码...........