View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide

funfunfun13

PREV ------ ● TOP ● ------ NEXTUploaded Image: fmrph.jpg


■マウスイベント

モーフをマウスでいろいろいじりたいときはどうするのかですがマウスイベントってのを
使うといいみたいです。キーイベントってのもあるけどそれはまたいつか。


■クラスを作る

Morphクラスのサブクラスを作りまする。<前やったのと同じね。
--------------------------------------------
Morph subclass: #TestMorph5
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'MyMorph'
--------------------------------------------
アクセプトね。
Alt + s ( Cmd + s )

Uploaded Image: image.jpg



■インスタンスを出します。


確認の為にWorkspaceに下記のコードを書いてドゥーイット。

--------------------------------------------
TestMorph5 new openInWorld
--------------------------------------------
Alt + d ( Cmd + d )

Uploaded Image: image1.jpg


Uploaded Image: image2.jpg

■メソッドを追加

「initialize」メソッドを書きます。これまた前と同じ。
--------------------------------------------
initialize
	super initialize.
	self extent: 50@50.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image3.jpg




■マウスエンター、マウスリーブ

モーフの上にマウスカーソルが入ったときにモーフの色を赤にします。
--------------------------------------------
mouseEnter: evt
	self color: Color red.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

マウスカーソルがモーフの領域から出たら元に(青)に戻します。
--------------------------------------------
mouseLeave: evt
	self color: Color blue.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

マウスオーバーを許可する?ってことかな?これを書かないとうんともすんともです。
--------------------------------------------
handlesMouseOver: evt
	^ true.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )そして

Uploaded Image: image4.jpg

試してみましょうマウスカーソルがモーフの中に入ると赤に、出ると青になりました。

Uploaded Image: image5.jpg


■マウスダウン、マウスアップ

マウスを押すとモーフが45度回転するようにします。
--------------------------------------------
mouseDown: evt
	self heading: 45.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

マウスを放すと元に戻るようにします。
--------------------------------------------
mouseUp: evt
	self heading: 0.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

マウスダウンを許可する?ってことだとおもうです。
--------------------------------------------
handlesMouseDown: evt
	^ true.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

Uploaded Image: image6.jpg

試してみましょう。
マウスカーソルがモーフの中に入ると赤になり、マウスを押すと45度回転、
マウスを放すと元に戻り、カーソルをモーフから出すと元の青に戻ります。
よっしゃ!!

Uploaded Image: image7.jpg


■マウス右ボタンでドラッグできるようにする

モーフをドラッグで動かそうとしてもいまのままでは動きません。
なので「handlesMouseDown」メソッドを以下のように書き直しちゃいましょう。
右ボタンでドラッグ移動が出来まする。
--------------------------------------------
handlesMouseDown: evt
	^ evt yellowButtonPressed not.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )

「yellowButtonPressed」のほかにもいろいろな条件で出来まする。
RedButtonPressed(これやるとここでは回転しないけどね)
shiftPressed
commandKeyPressed(ハロ出ちゃうか・・・)
controlKeyPressed(これもあかんな)
optionKeyPressed(これもだめっす)
とかね。

PREV ------ ● TOP ● ------ NEXT







■ MEMO ■

Monday, 12 January 2004, 8:26:47 pm
回転させるメソッドをMorphクラスで探したけどみつからない。
Morphクラスの親びんのObjectクラスでもみつからない・・・・
で、Playerクラスのメソッドでも使えるんじゃないかと
思ってやったらとりあえず動いたです。普通はどうすんだ?--thoru

Monday, 12 January 2004, 8:26:31 pm
マウスイベント&キーイベントはMorphクラス>eventhandlingカテゴリをみるべし。--thoru


Monday, 12 January 2004, 8:25:51 pm
マウスイベント系
mouseEnter
mouseEnterDragging

mouseLeave
mouseLeaveDragging

mouseDown
mouseUp

mouseStillDown
mouseStillDownThreshhold

startDrag

click
doubleClik

ついでにKeyイベント系
keyDown
keyStroke
keyUp

--thoru

Links to this Page