0

在一个类中,我有 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

我试过搜索,发现这篇文章并尝试关注它。我向按钮添加了一个 id 并在我的方法上调用它们,但 id 为 nil。如果我尝试为按钮设置一个名称,而不是像:btn1.name = "name" 并在我的方法上调用 self.name 但当然,该名称返回“touch”。我如何告诉我的方法触摸了哪个按钮?

4

3 回答 3

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")

它不起作用吗?

于 2013-03-14T05:38:12.680 回答
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)

同样的事情不同的方式。

于 2013-03-18T01:58:28.937 回答
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)
于 2013-12-18T13:53:00.897 回答