События мыши на изображении в smalltalk

У меня есть следующий класс в светской беседе

Object subclass: #SnookerBall
    instanceVariableNames: 'image type position'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'mmn16'

initialize
    self initialize.
    image := ImageMorph new image: (Form fromFileNamed: 'ball_1.gif').
    image position:100@100.

Теперь я хочу реализовать события мыши на изображении. в основном мне нужно симулировать бильярдный шар. Поэтому мне нужны события мыши (нажатие, перетаскивание и т. Д.), Чтобы они выглядели анимированными.

Пожалуйста, помогите Спасибо заранее

Хорошо, у меня есть отредактированный класс SnookerBall

ImageMorph subclass: #SnookerBall
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'Snooker'

и инициализировать метод

initialize
    self image: (Form fromFileNamed: 'ball_1.gif');
    extent:40@40;
    position:0@0.

Я пытаюсь выполнить:

b:=SnookerBall new.
b openInWorld.

и у меня есть ошибка: MessageNotUnderstood: UndefinedObject>>hasPositiveExtent

пожалуйста помоги

1 ответ

Ты можешь попробовать Morph>>on:send:to::

SnookerBall>>
initialize
    "..."
    image on: #click send: #ballClicked to: self

ballClicked
    "pop up a modal dialog"
    self inform: 'Ball was clicked'

... вызывать ballClicked на объекте SnookerBall при нажатии на ImageMorph.

Посмотри на EventHandler>>on:send:to: чтобы увидеть возможные аргументы для: #mouseDown, #mouseMove, #click, ...

Если вам нужен аргумент для полученного сообщения, рассмотрите Morph>>on:send:to:withValue:,

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