#06/14/2002 追加中
#06/13/2002 新規作成
MorphicFallingObject(Guzdial)を学ぶ
Guzdial の ’Squeak Object-OrientedDesign with Multimedia Application’ の第5章は、 'Squeak でユーザインタフェースをつくる'(Building User Interface in Squeak)で、Morphicを幅広く解説しています。この章の概要を紹介します。
まず、ソースをダウンロードして、file Inしてください。FallingImageMorph.st KickButtonMorph.st
最初に動作をみてみましょう。 Workspace で、 FallingImageMorph ex1 と入力し、do it してください。
カギ型のカーソルが出て、落下するイメージになるフォーム(画像)を指定するようにプロムプトします。今回は、画面左下の「ストップ」ボタンを使いましょう。
左上で左クリックして、ドラッグして右下で放します。
赤い、「ストップ」ボタン(ball)が画面左上から落下を始めました。だんだん加速度がついて落ちていきます。
真中くらいまできたら、KickTheBall morphを左クリックしてください。ball が100ピクセル上に跳ね上がり、下落速度も元に戻ります。
KickTheBall をつかまえて、halo を表示してください。赤いメニューをクリックすると、一番下に、'set gravity'(重力の設定)という項目があります。
これを選択すると、'New Gravity'いうシンプルな入力フォームがあらわれます。30と入力してください。落下速度が大きくなります。
今度は、ball をつかまえて、halo を表示してみましょう。メニューから debug->inspect としてオブジェクトの位置を示すインスタンス変数の bounds,
corner をみてみましょう。
落ちつづける ball はどこまでいくのでしょうか? あら、永遠に落ちつづけています。(笑い)
KickTheBall を何回かクリックすると、ball が帰ってきます。
![]() |
||
![]() |
![]() ![]() |
![]() |
![]() ![]() ![]() |
ここまで、6/13(木)
次回:
ソースの解説
インスタンス変数
|
インスタンス変数
|
意味
|
| bouds | このmorphの形を定義している四角 |
| owner | morph(self)が組み込まれているコンテナmorph。Worldではnil |
| submorphs | 自分の中にあるmorph。addMorph: で組み込まれる |
| color | morphのメインカラー |
| name | デフォルトでは名前はない。全てがmorphでありメモリ節約のため |
|
インスタンス変数
|
意味
|
| balloonText, balloonTextSelector |
全てのmorphは self extension ballonText: 'This is all about me...' により ballon
help をセットできる。 balloonTextSelector によりテキストに動的にアクセスできる |
| visible | morph が見えるかどうかをセット |
| locked | ロック、アンロック。ロックされたmorphは選択もできない |
| sticky | sticky morphは動かない。togglsSticknessで状態変更 |
イベント
|
イベント
|
ハンドル(操作)方法
|
| MouseDown | メソッド handlesMousDown: を持つ。input は MorphicEvent、true を返す。 メソッド ,ousDown: を持つ。input は MorphicEvent。mouse down を望むように扱える |
|
MouseUp, |
上と同様に、handlesMousUp: 、handlesMouseOver: メソッド。 |
| MouseEnter, Mouse Leave |
handlesMouseOver: に true を返し、mouseEnter: mouseLeave: を定義する |
| Mouse Move (Mouseの中) |
handlesMouseDown: に true を返し、mouseMove: を実装する |
| KeyStorokes |
morphがkeystorokes をキャプチャすると hasFocus に対して true を返し、KeyStroke: のイベントをaccept(受け入れ)する。フォーカスが変わると keyboardFocusChange: 受け取り(フォーカスにはいる)は true 喪失(出る)は false が送られてくる。 |
アニメーション
step
steptime
カスタムメニュー
addCustomMenuItems: aCsutomMenu hand: aHandMorph
Morphicの構造
#HTML版テキスト
#readme.html も添付する
(以上)