在lua中,我想要一个table`s方法来全局更改其值,但它只在本地进行

时间:2016-01-03 14:53:06

标签: lua love2d

会发生什么:我需要self.key在按键和按键之间切换。

显然,这发生在本地级别(如果我取消注释“if”子句,打印按键按下),当我需要的是它实际更改键对象的值。

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

关于如何修复它的任何想法?

1 个答案:

答案 0 :(得分:5)

您的问题与此无关,这是因为您正在设置'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'