Ruby Shoes:在图像上使用.click无法通过右键单击左侧

时间:2012-02-28 22:02:01

标签: ruby click right-click shoes

我试图制作一个图像,在左键单击时将数字提高一个,并在右键单击时降低它。 我能够通过以下代码让鞋子检测到哪个按钮被点击:

Shoes.app do
  @info = para "No button pressed."
  click do |button|
    @info.replace "#{button} was PRESSED."
  end
end

这很好用。 LMB为1,RMB为2,MMB为3。 但是当我尝试检测一个点击的图像时

Shoes.app do
  number = 0
  @image = image "image.png"
  @info = para "No button pressed."
  @image.click do |button|
    @info.replace "#{button} was PRESSED."
  end
end

似乎只是在传递自我。结果,无论按钮如何,都按下了“(Shoes :: Image)”。我找不到任何方法来解决这个问题。

2 个答案:

答案 0 :(得分:2)

如果你试试这会怎么样?

Shoes.app do
  number = 0
  @image = image "image.png"
  @info = para "No button pressed."
  @image.click do |button|
    @info.replace "#{button.inspect} was PRESSED."
  end
end

答案 1 :(得分:2)

我认为元素的click方法旨在将self作为块传递。

据我所知,唯一的方法是使用主点击事件并使用鼠标位置块来确定点击时鼠标是否在图像上。

Shoes.app do
  number = 0
  @info = para "No button pressed."
  @image = image "image.png"

  click {|button, x, y|
    if (x > @image.left) && (x < (@image.left + @image.width)) && (y > @image.top) && (y < (@image.top + @image.height))
      @info.replace "#{button} was PRESSED."
    end
  }
end