检测电晕中的物体触摸

时间:2013-03-14 03:40:59

标签: lua corona

在一个班级中,我有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”。我怎么告诉我的方法触摸了哪个按钮?

3 个答案:

答案 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)