Ruby Shoes: использование .click на изображении не может отличить левую кнопку от правой - PullRequest
1 голос
/ 29 февраля 2012

Я пытался создать изображение, которое поднимает число на единицу при щелчке левой кнопкой мыши и уменьшает его при щелчке правой кнопкой мыши. Я смог заставить обувь определить, какая кнопка нажата с помощью приведенного ниже кода:

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 ]

2 голосов
/ 29 февраля 2012

Я думаю, что метод щелчка элемента предназначен для передачи 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
2 голосов
/ 29 февраля 2012

Что произойдет, если вы попробуете это?

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
...