可以分别交互的同一物体的多个副本。
2017-1-10 12:5:0
收藏:0
阅读:108
评论:2
我试图创建多个具有可从任何地方访问的单独属性的相同显示对象的副本。 特别地,我希望能够点击和与它们每个人互动。 到目前为止,我的代码如下:-
centerX = display.contentCenterX
centerY = display.contentCenterY
local function onGemTouch(event)
print("查看是否可以点击每个对象")
end
local spawnTable = {}
local function gamebegin(params)
ball = display.newImageRect(params.image, 62,62)
ball.x = centerX - 4*60 +2*(params.x-1)*60
ball.y = centerY -3*60 + (params.y-1)*60
ball.ballTable = params.ballTable
ball.index = #ball.ballTable+1
ball.myName = ball.index
ball.ballTable[ball.index] = ball
return ball
end
--我有四个随机使用的图像--
for i = 1, 4 do
for j = 1,7 do
local spawn = gamebegin({image = "images/" .. math.random(4) ..".png", x=i, y = j, ballTable = spawnTable})
end
end
ball.tap = onGemTouch
ball:addEventListener( "tap", ball )
代码在感性方面运作良好,我希望出现的副本出现在我想要的网格中,但是只能点击对象的最后一个副本。 因此,显然我在这里做错了一些事情。 任何帮助将不胜感激。
点赞
用户4750231
谢谢你的回复 Millie。你的方法可能有效,但与此同时,我已经找到了另一个解决方案。
事实证明,我需要在 spawnTable 上添加 addEventListener("tap", onGemTouch)。但我会尝试你的方法 - 它似乎更容易。
2015-04-05 10:25:04
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
不知道你的代码(或 Corona)的其他部分,我认为添加侦听器的正确语法是:
ball:addEventListener("tap", onGemTouch)由于你想要将其添加到每个球中,你需要将它放在创建球的循环内部,或者将其放在创建球的函数内部。如果将其放在创建球的函数内部,代码如下:
local function addBall(params) ball = display.newImageRect(params.image, 62,62) ball.x = centerX - 4*60 +2*(params.x-1)*60 ball.y = centerY -3*60 + (params.y-1)*60 ball.ballTable = params.ballTable ball.index = #ball.ballTable+1 ball.myName = ball.index ball:addEventListener("tap", onGemTouch) ball.ballTable[ball.index] = ball end for i = 1, 4 do for j = 1,7 do addBall({ image = "images/" .. math.random(4) ..".png", x=i, y = j, ballTable = spawnTable}) end end由于
gamebegin只是创建一个新的球,为什么不将其重命名为addBall呢?如果将其添加到ballTable中并且从未使用返回值,那就不要返回任何东西:local function addBall(params) ball = display.newImageRect(params.image, 62,62) ball.x = centerX - 4*60 +2*(params.x-1)*60 ball.y = centerY -3*60 + (params.y-1)*60 ball.ballTable = params.ballTable ball.index = #ball.ballTable+1 ball.myName = ball.index ball:addEventListener("tap", onGemTouch) ball.ballTable[ball.index] = ball end for i = 1, 4 do for j = 1,7 do addBall({ image = "images/" .. math.random(4) ..".png", x=i, y = j, ballTable = spawnTable}) end end根据对你答案的评论建议:
local centerX = display.contentCenterX local centerY = display.contentCenterY local offset = 60 local imageSideLength = 62 local spawnTable = {} local function onGemTouch(event) print("to see if each object can be tapped") end local function getBall(imagePath, x, y) local ball = display.newImageRect(imagePath, imageSideLength, imageSideLength) ball.x = centerX - 4*offset + 2*(x - 1)*offset ball.y = centerY - 3*offset + (y - 1)*offset return ball end for i = 1, 4 do for j = 1, 7 do local ball = getBall("images/" .. math.random(4) .. ".png", i, j) ball:addEventListener("tap", onGemTouch) table.insert(spawnTable, ball) end end