Добавить обработку событий клика в morph

Я хочу легко обработать щелчок мышью на морфе. Могу ли я сделать что-то вроде:

'hello' asMorph
  onClick: [ :e | "baboom" ];
  openInHand

?

1 ответ

Решение

Что-то вроде этого?

StringMorph subclass: #ClickMorph
    instanceVariableNames: 'action'
    classVariableNames: ''
    category: 'MyMorph'

handlesMouseDown: evt
    ^true

mouseDown: evt
    evt hand waitForClicksOrDrag: self event: evt

mouseUp: evt
    action value

action
    ^ action

action: anObject
    action := anObject

Вы можете назвать это как

(ClickMorph contents: 'Click me') 
    action: [Transcript open];
    openInWorld

Конечно, необходимо иметь блок и убедиться, что вы можете реагировать на клик.

Другие вопросы по тегам