У меня есть следующий класс в небольшом разговоресобытие мыши на изображении в 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:[email protected]
теперь я хочу, чтобы реализовать события мышей на изображении. В основном мне нужно симулировать шар снукера. Так что мне нужны события мыши (нажата, перетащена и т. Д.) И сделайте ее анимированной.
Пожалуйста, помогите Спасибо расширенного
Ok У меня есть класс SnookerBall отредактировал
ImageMorph subclass: #SnookerBall
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Snooker'
и инициализацию методы
initialize
self image: (Form fromFileNamed: 'ball_1.gif');
extent:[email protected];
position:[email protected]
Я пытаюсь выполнить:
b:=SnookerBall new.
b openInWorld.
и у меня есть сообщение об ошибке: MessageNotUnderstood: UndefinedObject >> hasPositiveExtent
пожалуйста, помогите
В зависимости от ваших требований вы также можете сделать SnookerBall собственностью Morph (например, путем подкласса из ImageMorph) и переопределить 'handlesMouseDown:', 'mouseDown:' и friends. Для этого см. Протокол «обработка событий» (категория метода) в Morph. Кроме того, у Squeak по книге примеров есть хорошее введение в Morphs и обработку событий, если ваши классы Morphs. – JayK
Обратите внимание, что ваш метод инициализации имеет бесконечную рекурсию, потому что 'self initialize' снова вызывает тот же метод. Возможно, вам захотелось написать 'super initialize' вместо этого (но поскольку Object ничего не делает в инициализации, вы также можете полностью опустить эту строку). – JayK
если я наследую от ImageMorph, как бы выглядел метод drawOn? И запустите само инициализацию, это моя ошибка :) – user3132295