【问题标题】:How do I embed icons into text within Squib, the Ruby gem?如何将图标嵌入到 Ruby gem Squib 中的文本中?
【发布时间】:2015-10-25 23:33:21
【问题描述】:

我将此块添加到我的deck.rb:

text(str: 'Gain 1 :tribute:') do |embed|
embed.svg key: ':tribute:', file: 'tribute.svg'
end

但是,这会将“Gain 1 [my icon here]”放在每张卡片的左上角,而不是卡片文字“Gain 1 贡品”的位置。

如果我添加这一行,试图让它在我的 .csv 文件中指定“能力”列:

%w(Ability).each do |key|

然后我收到一条错误消息:

“语法错误,意外的输入结束,需要keyword_end。”

我需要在我的deck.rb 中添加什么,确切地说,为了使它使用tribute.svg 图标,只要能力列中的卡有文字“获得1 贡品”?

这是我当前的deck.rb:

require 'squib'
require 'game_icons'

Squib::Deck.new(cards: 4, layout: %w(hand.yml layout.yml)) do
  background color: '#FFFFFF'
  data = csv file: 'country.csv'
  png file: data['Art'], layout: 'Art'

  %w(Title Ability Quote Type Subtype).each do |key|
    text str: data[key], layout: key, markup: true
  end

  %w(Tribute Power Dominion).each do |key|
    svg file: "#{key.downcase}.svg", layout: "#{key}Icon"
    text str: data[key], layout: key
  end

  text(str: 'Gain 1 :tribute:', x: 275, y: 745) do |embed|
    embed.svg key: ':tribute:', file: 'tribute.svg'
  end

  save_png prefix: 'country_'
end

【问题讨论】:

  • 请编辑您的问题以包含您的所有代码。

标签: ruby squib


【解决方案1】:

文本方法需要指定 x 和 y。像这样:

text(str: 'Gain 1 :tribute:', x: 300, y: 500) do |embed| embed.svg key: ':tribute:', file: 'tribute.svg' end

至于语法错误,每个do 都需要一个end,因为您正在定义一个块。尽管该部分似乎与您问题的第一部分无关。剪断的%w(Ability).each 对我来说似乎很愚蠢,因为这只是迭代一个 1 元素数组。

【讨论】:

  • 你是最棒的,安迪!谢谢!指定的 x 和 y 是否意味着它每次都将图标放在同一个位置,而不是将其嵌入到技能文本碰巧说“......获得 1 贡品”的地方?
  • x 和 y 用于整个文本字符串。 embed.svg 根据:tribute: 在字符串中的位置(以及大量其他信息,如文本换行方式、字体大小等)计算出实际图标的 x-y。
  • 嗯,您的建议将“获得 1 [我的贡品图标]”放在每张卡片的中心。技能说明中的“获得 1 贡品”仍然存在,也没有被替换。我是不是把你的文本块放到了错误的地方,还是什么?我把它作为一个单独的块放在deck.rb 中。
  • 我认为您的代码 sn-p 还有更多我没有看到的内容。您所指的“技能文本”可能是单独的 text 调用,所以是的,因为我们没有修改该调用,所以不会改变。
  • 我已经用我的 deck.rb 编辑了 OP,包括你的建议。也许问题是它没有在我的 .csv 文件中指定“能力”列?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多