处理事件处理程序时的变量范围
function World:draw()
--draw the tiles based on 2d int array
--draw the player
--draw the monsters
--show what you need to based on camera
self.map[0][0]=display.newImage("dirt_tile.png",i,j)
end
当我使用事件处理程序时,我无法访问其中的任何世界对象属性:
Runtime:addEventListener("enterFrame",World.draw)
是否可以使用不同类型的 eventListener,或者是否有不同的方法来实例化 eventListener 以便自引用上下文保持完整?
function World:draw()
--draw the tiles based on 2d int array
--draw the player
--draw the monsters
--show what you need to based on camera
self.map[0][0]=display.newImage("dirt_tile.png",i,j)
end
I can't access any of my world object's properties in there when I use the event handler:
Runtime:addEventListener("enterFrame",World.draw)
Is there a different kind of eventListener I can use, or is there a different way to instantiate the eventListener so the self-referencing context stays intact?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
就在这里:
有关详细信息,请参阅此 API 参考页面。
Here you go:
See this API reference page for details.
如果您将表命名为
local self = {}
,那么它可能会与隐式self
参数发生冲突。function World:draw()
只是World.draw = function(self)
的 Lua 语法糖。通过使用self
,您可以使用运行时事件处理程序传递给您的函数的第一个参数(从 API 来看,它传递event
,您将得到该参数 <代码>自我)。尝试以不同的方式命名您想要访问的表(例如
local this
)并查看它是否有效。In you named your table
local self = {}
, then it may collide with the implicitself
parameter.The
function World:draw()
is just a Lua syntax sugar forWorld.draw = function(self)
. By working withself
, you are using whatever first parameter the runtime event handler is passing to your function (judging from the API, it passesevent
, which you will get asself
).Try naming the table you want to access differently (like
local this
) and see if it works.