【问题标题】:addEventListener() in LuaLua 中的 addEventListener()
【发布时间】:2012-01-06 17:57:36
【问题描述】:

我在使用 Corona 时遇到问题,需要帮助。

当我注册一个事件监听器时,例如object:addEventListener("touch", listener)。但是监听函数有很多这样的参数:

function listener (event, param1, param2...)
    ...
end

我的问题是如何将所有参数传递给监听器。所有搜索只通过一个参数是事件。

谢谢!

【问题讨论】:

    标签: iphone ios lua execute coronasdk


    【解决方案1】:
    local function listener(param1, param2)
            return function(event)
                    print(event.name, event.phase, param1, param2)
            end
    end
    
    Runtime:addEventListener("touch", listener(12, 33))
    Runtime:addEventListener("tap", listener(55, 77))
    

    【讨论】:

      【解决方案2】:

      执行此操作的一种方法是向您附加处理程序的对象添加属性。在监听器中,您可以通过event.target参数访问它们。

      例如,为某些图像对象添加新的 param1param2 属性:

      local touchHandler = function( event )
          if event.phase == "began" then
              local t = event.target
              print( "param1=" .. t.param1 .. ", param2=" .. t.param2 )
          end
      end
      
      local image1 = display.newImageRect( "myImage.png", 100, 100 )
      image1.param1 = "Apple"
      image1.param2 = "Zucchini"
      image1:addEventListener( "touch", touchHandler )
      
      local image2 = display.newImageRect( "myImage.png", 100, 100 )
      image2.param1 = "AC/DC"
      image2.param2 = "ZZ Top"
      image2:addEventListener( "touch", touchHandler )
      

      这将在您触摸 image1 时打印“Apple”和“Zucchini”,并在您每次触摸 image2 时打印“AC/DC”和“ZZ Top”。

      【讨论】:

        【解决方案3】:

        您可以使用以下类将事件添加到任何 lua 表:

        https://github.com/open768/library/blob/master/lib/lib-events.lua

        【讨论】:

        • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(与另一个中途停留的参考相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
        猜你喜欢
        • 1970-01-01
        • 2015-03-19
        • 2022-12-03
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 2018-08-11
        • 1970-01-01
        相关资源
        最近更新 更多