我在 ruby 2D 中有一个显示分数的文本对象。如何更新文本?
到目前为止我有这个
update do
text = Text.new("Score: #{@score}")
end
它不是替换它,而是在它之上创建一个新的文本对象。你怎么能替换它而不是添加它?
根据文档,您似乎需要在循环Text
之外实例化对象。update
这将“永远”将其绘制到屏幕上,直到您调用该remove
方法。
在您当前的代码中,您只是每次都实例化一个新对象,而 Ruby 2D 会秘密地保留它,即使您没有将它分配给变量。
与 Gosu 等其他一些 2D 库不同,Ruby 2D 不会停止绘制,除非您明确告诉它停止。
尝试
@text = Text.new("Score: #{@score}")
update do
...
@text.remove # At a time you want to stop displaying that text.
...
end
这里是一个简单的例子,如何使用Text
类ruby2d
require 'ruby2d'
sector = 3
txt = Text.new(
sector.to_s,
x: 10, y: 10,
size: 20,
color: 'white',
z: 10
)
on :key_down do |event|
case event.key
when 'a'
sector += 1
txt.text = sector.to_s
when 's'
sector -= 1
txt.text = sector.to_s
end
end
show