1

我在 ruby​​ 2D 中有一个显示分数的文本对象。如何更新文本?

到目前为止我有这个

    update do
      text = Text.new("Score: #{@score}")
    end

它不是替换它,而是在它之上创建一个新的文本对象。你怎么能替换它而不是添加它?

4

2 回答 2

0

根据文档,您似乎需要在循环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

在 Ruby 2D 中添加和删除对象

于 2019-08-29T17:45:23.547 回答
0

这里是一个简单的例子,如何使用Textruby2d

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
于 2019-09-02T09:43:54.743 回答