【问题标题】:Tap on display objects in Corona SDK点击 Corona SDK 中的显示对象
【发布时间】:2013-05-01 11:20:56
【问题描述】:

我正在尝试打印来自 3 个不同显示对象的点击,但在终端中打印的点击不止一个。 他们需要自己的特定功能,但目前还不可能。我该怎么办? 我是 Corona 和 LUA 的新手。

-- BOBLER 显示对象

本地运动1 = display.newImage("images/sport1.png")

sport1.id = "mySport1"

运动1.x = 120

运动1.y = 90

运动1:比例(1,1)

本地 gossip1 = display.newImage("images/gossip1.png")

gossip1.id = "myGossip1"

gossip1.x = 400

gossip1.y = 120

gossip1:scale(1,1)

local kultur1 = display.newImage("images/kultur1.png")

kultur1.id = "myKultur1"

kultur1.x = 250

文化1.y = 200

文化1:规模(1,1)

本地函数 onSport1Tap(self, event)

print(self.id .." 被点击了。" )

结束

本地函数 onGossip1Tap(self, event)

print(self.id .." 被点击了。" )

结束

本地函数 onKultur1Tap(self, event)

print(self.id .." 被点击了。" )

结束

-- 点击添加事件监听器

sport1.tap = onSport1Tap

sport1:addEventListener("tap", sport1)

gossip1.tap = onGossip1Tap

gossip1:addEventListener("tap", gossip1)

kultur1.tap = onKultur1Tap

kultur1:addEventListener("tap", kultur1)

【问题讨论】:

    标签: coronasdk event-listener tap


    【解决方案1】:

    我建议你做以下事情:

    1. 将此函数用于点击/触摸事件:

      function sport1:touch(e)
          if e.phase == "ended" then
              print(self.id.." was tapped")
          end
      end
      
    2. 使用tables 更有效地创建对象,尤其是在您计划添加更多对象时。

    下面是一个例子:

    本地对象 = {}

    object[ 1 ] = {id = mySport1, x = 120, y = 90} --顺便说一下,默认比例是(1,1)

    对象[2] = {...}

    对象[3] = {...}

    然后可以使用for loops 轻松为所有人创建信息:

    对于 i = 1,#objects 做

    本地对象[i].img = display.newImage("images/"..object[i].id..".png")

    object[i].img.x, object[i].img.y = object[i].x, object[i].y

    局部形状 = object[i].img

    函数形状:touch(e)

    如果 e.phase == "结束" 那么

    print(object[i].id.."被点击")

    结束

    shape:addEventListener("touch")

    结束

    我希望这不是太高级...我花了一段时间才了解表格的效力,但是当您需要创建大量参数或对象时,它们变得非常有效。 关于触控功能,我并没有真正使用过点击 - 我只是相信触控更好并且更易于使用。

    【讨论】:

    • 非常感谢您的回复。我将研究您的建议并尝试使其发挥作用。我使用 tap 的原因是因为它的目的是在一个也应该响应触摸的界面中使用它。
    【解决方案2】:

    只需 return true 在所有点击功能的末尾,如下所示:

    local function onKultur1Tap( self, event )    
      print(self.id .. " was tapped." )
      return  true -- ** just it **
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多