【问题标题】:Ruby Shoes: using .click on an image cannot tell left from right clickRuby Shoes:在图像上使用 .click 无法区分左击和右击
【发布时间】:2012-02-28 22:02:00
【问题描述】:

我试图制作一个图像,左键单击时将数字加一,右键单击时将其降低。 我可以让鞋子检测使用以下代码点击了哪个按钮:

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) 被按下”。我找不到解决此问题的任何方法。

【问题讨论】:

    标签: ruby click right-click shoes


    【解决方案1】:

    如果你尝试这个会发生什么?

    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
    

    【讨论】:

    • 仍然返回(Shoes::Image)。我认为问题出在“@image.click do |button|”脚本的一部分。
    【解决方案2】:

    我认为元素的点击方法是设计为将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
    

    【讨论】:

    • 我可以让它告诉你点击了什么就好了。问题是让图像从右键单击向左显示。通常“点击做|按钮|”将返回按钮,但在图像上使用时会返回图像。
    • 你试过那个代码吗?左右单击图像,它应该会更改para 文本。据我所知,唯一允许您检测按钮编号的方法是主要的click 方法。所以需要分别比较鼠标和图片位置来检测图片是否被点击。
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多