在一个班级中,我有2个“按钮”,它们正在调用2个类:
btn1 = display.newImage("1.png")
btn2 = display.newImage("2.png")
btn1:addEventListener("touch", onSceneTouch)
btn2:addEventListener("touch", onSceneTouch2)
这个问题是2个方法(onSceneTouch,onSceneTouch2)做同样的事情。唯一的区别是它根据触摸的按钮设置标志。我的方法看起来像这样:
function onSceneTouch( event )
//do something here
end
我尝试过搜索,然后找到this article并尝试按照它进行搜索。我添加了一个id 按钮并在我的方法上调用它们但id为零。如果我尝试为按钮设置名称而不是像:btn1.name =“name”并在我的方法上调用self.name但当然,名称返回“touch”。我怎么告诉我的方法触摸了哪个按钮?
答案 0 :(得分:2)
根据您链接的文章,您的代码应如下所示:
function onSceneTouch(self, event)
local button_id = self.id
--do something here
end
btn1 = display.newImage("1.png")
btn2 = display.newImage("2.png")
btn1.id = 'Button1'
btn2.id = 'Button2'
btn1.touch = onSceneTouch
btn2.touch = onSceneTouch
btn1:addEventListener("touch")
btn2:addEventListener("touch")
不起作用吗?
答案 1 :(得分:1)
我知道答案1的例子应该可以正常工作,但它比做一个函数监听器而不是一个表监听器要多一些工作。我会这样写的:
function onSceneTouch(event)
local target = event.target -- this is the actual button that was touched.
if event.phase == "ended" then
-- do your work here
print(target.id) -- prints "Button1" or "Button2"
end
return true -- important!
end
btn1 = display.newImage("1.png")
btn2 = display.newImage("2.png")
btn1.id = 'Button1'
btn2.id = 'Button2'
btn1:addEventListener("touch", onSceneTouch)
btn2:addEventListener("touch", onSceneTouch)
同样的事情。
答案 2 :(得分:0)
enter code here
使用单个事件监听器&识别谁使用唯一名称来调用它
例如
function onSceneTouch( event )
local objectName=event.target.name
if objectName==1 then
flag1=true
else
flag2=true
end
end
btn1 = display.newImage("1.png")
btn1.name=1
btn2 = display.newImage("2.png")
btn1.name=2
btn1:addEventListener("touch", onSceneTouch)
btn2:addEventListener("touch", onSceneTouch)