【问题标题】:Why is my event handler not allowing me to access event.target?为什么我的事件处理程序不允许我访问 event.target?
【发布时间】:2019-10-16 14:15:08
【问题描述】:

我正在新的 Corona 游戏中设置库存管理系统。我正在通过在场景中创建示例 displayObject 然后在点击时更改该对象的可见性来测试初始设置。当我尝试时,模拟器给我一个错误,它说“尝试索引本地'事件'(一个零值)。”

我尝试将侦听器从函数侦听器更改为表侦听器,但同样的错误仍然存​​在。我已经阅读了相关的 Corona 文档以及我可以在网站上找到的所有与 Corona 相关的结果,但似乎没有一个解决方案适用于我的特定情况(我的设置似乎已经与其他设置一致)解决方案建议)。

游戏有几个文件,但这里的相关部分是:

inventory.lua

local composer = require( "composer" )

local I = {}


--Identifies what to do when an object is clicked
function I:clickRouter( event )
  event.target.isVisible = false --this is the line that prompts the error
return true
end

return I

sceneOne.lua

local composer = require( "composer" )
local inventoryManager = require( "inventory" )

local scene = composer.newScene()

function scene:create( event )

    local sceneGroup = self.view

        local obj = display.newImageRect(sceneGroup, "images.xcassets/scObj.png", 32, 32)
        obj.num = 1
        obj:addEventListener("tap", inventoryManager.clickRouter)

end

--...other irrelevant code omitted here

我希望在点击时图像会消失。相反,它会抛出上述错误消息。我认为该错误可能与文件之间的交互方式有关,但我无法弄清楚它是什么。

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    好的,想通了:

    根据this answerthis conversation,我一直将 clickRouter 函数声明为方法而不是常规函数,因此有一个隐含的“self”参数导致我试图调用"event" 改为 null。

    从以下位置更改功能:

    function I:clickRouter(event)
    

    function I.clickRouter(event)
    

    解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 2021-08-26
      • 2022-11-18
      • 1970-01-01
      • 2017-02-21
      相关资源
      最近更新 更多