在lua中,我想要一个表的方法来全局改变它的值,但它只在本地生效。

发生的情况是:我需要在按下键时使 self.key 在 true 和 false 之间切换。

显然,这只是在本地级别上发生(如果我取消 "if" 子句的注释,那么 print 就会在按键时发生),但我需要它实际上改变 keys 对象的值。

keys = {}
keys.escape = false
keys.space  = false

function keys:pressed()
    for key in pairs(self) do
        self.key = love.keyboard.isDown(key)
        --if self.key then print(key) end
    end
end

function love.update()
    keys:pressed()
end

有什么解决办法吗?

点赞
用户3979429
用户3979429

你的问题与此无关,而是因为你正在设置 'key' 索引,而不是个别键的索引... 如果这有任何意义的话。

基本上,当你设置 self.key 时,key 是一个 _字符串_。而不是循环变量。为了设置它,你需要用方括号对它进行索引。

我是这个意思:

keys = {}
keys.escape = false
keys.space  = false

function keys.pressed(self)
    for key in pairs(self) do
        self[key] = love.keyboard.isDown(key)
        --if self.key then print(key) end
    end
end

function love.update()
    keys:pressed()
end

这样我们使用了 变量 key 而不是字符串 'key'

2016-01-03 16:18:39