#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(木)

次回:
ソースの解説


Morphicの概要

インスタンス変数

インスタンス変数
意味
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,
Mouse Over

上と同様に、handlesMousUp: 、handlesMouseOver: メソッド。
mouseUp: 、mouseOver: メソッド

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 も添付する

(以上)