【问题标题】:In lua, I want a table`s method to change its value globally, but it only does locally在lua中,我想要一个表的方法来全局改变它的值,但它只在本地做
【发布时间】:2016-01-04 10:27:01
【问题描述】:

发生的情况是:我需要 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

关于如何解决它的任何想法?

【问题讨论】:

  • self.keyself[key]相同!你想要后者。还要记住for循环也会遇到pressed“key”。

标签: lua love2d


【解决方案1】:

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

【讨论】:

  • 天啊,这真的很明显,哈哈,非常感谢,像魅力一样工作:D
  • @Vitu 没问题,很高兴我能帮上忙。
  • 对不起,我不知道我必须接受答案!再次感谢!
  • @Viti 没问题 :)(再次)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多