gpt4 book ai didi

lua - 为什么我的事件处理程序不允许我访问 event.target?

转载 作者:行者123 更新时间:2023-12-04 08:01:45 25 4
gpt4 key购买 nike

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

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

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

库存.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

场景一.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

我希望,点击后,图像会消失。相反,它会抛出上述错误消息。我认为错误可能与文件如何相互交互有关,但我无法弄清楚它是什么。

最佳答案

好的,想通了:

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

更改功能:

function I:clickRouter(event)


function I.clickRouter(event)

解决了我的问题。

关于lua - 为什么我的事件处理程序不允许我访问 event.target?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56386451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com