#06/19/2002 修正
#06/07/2002 新規作成
Morphic入門 (作成中)
Morphicはグラフィックオブジェクトのmorphを扱います。("morph"は、shapeやformを意味するギリシャ語です。)Morphはつかんだり、動かしたりできるビジュアル部品です。morphはサブmorphを持つことができ、これをcomposite
morphといいます。omposite morphはひとつのユニットとして、移動、コピー、削除ができます。またmorphicはビジュアル部品としての基本的機能を持ったテンプレートでもあり自由に拡張できます。ですから、morphを使えば、簡単にGUIを構築することができます。
http://www.phaidros.com/DIGTALIS/englisch/sqk/sqk00031.htm
(Programming in Morphic #2 http://minnow.cc.gatech.edu/squeakdoc/11の記事に実装画面を加えた構成のようです)
Morphicのプログラミングには2つの方法があります。
1 クラシック(古典的)スタイル
2 ユーザ・スクリプティング スタイル
クラシック(古典的)スタイル:
Morphクラスのサブクラスをつくり、それを拡張します。この良いお手本は BookPageSorterMorph と EnvelopeEditorMorph
です。
http://www.phaidros.com/DIGITALIS/englisch/sqk/sqk00034.htm
ユーザ・スクリプティング スタイル:
Workspaceにコードの断片を書いていろいろ評価してみるように、Parts Binにあるmorph部品をドラッグしていろいろ組み合わせ、動作を確認しながらプログラミングしていきます。
http://www.phaidros.com/DIGITALIS/englisch/sqk/sqk00035.htm
ユーザ・スクリプティングの基本3要素
"Halo"(ハロ)
morphの上で、shift+黄ボタンクリックで開きます。
http://www.phaidros.com/DIGITALIS/englisch/sqk/sqk00036.htm
"Viewer"(ビュワー)
プロパティのパラメータを変更したり、起動するスクリプトを設定したりします。インスタンス変数やメソッドの追加もできます。
Haloより青い眼のマークをクリックすつと開きます。
http://www.phaidros.com/DIGITALIS/englisch/sqk/sqk00037.htm
"Scriptor"(スクリプタ)
Viewerのそれぞれのオブジェクトについて、実際にスクリプトを、書いて、テストし、セーブします。
http://www.phaidros.com/DIGITALIS/englisch/sqk/sqk00038.htm
ユーザスクリプティンについては、こちらにとても良い説明がありますので、ごらんください。
すみさん Morphic
レッスン(もうひとつの Squeak 入門) http://sumim.no-ip.com:8080/morphiclesson
阿部さんのHPにある記事も大変面白いです。
平井夏児さんによるMac Fanの特集「Squeakの全貌に迫る」より
Squeakを知りたいっ! http://squeak.hoops.ne.jp/1213SqHirai/index.htm
#これでつくったmorphのコードのfile outは、そのうちこのあたりを参考にしてまとめるとして
http://www.phaidros.com/DIGITALIS/englisch/sqk/sqk00046.htm
ここでは、クラシックスタイルでコードを書いていきましょう。
以下のテキストをもとに、すすめます。
# (1 Fun with the Morphic Graphics System by John Maloney 予定)
Squeak青本のドラフト原稿より、3章、The Morphic User-Interface Framework, by John Maloney of Disney Imagineering R&D morphic.final.pdf
Morphic をとりあえず動かしてみましょう。
まず、Morph クラスのサブクラス TestMorph を定義します。
Morph subclass: #TestMorph
instanceVariableNames: 'angle '
classVariableNames: ''
poolDictionaries: ''
category: 'My Stuff'
次に、イベントハンドリングのメソッドを定義します。
mouseDown: evt
self position: self position + (100@100).
マウスの左ボタンが押されたら、自分の位置を100@100ポイント、斜め右下に動かします。
handlesMouseDown: evt
^evt shiftPressed not
shiftキーが押されていなかったら、この入力を無視します。
それでは、workspace で
TestMorph new openInWorld
と打ちこんで、alt-d してください。
青い小さなMorphが表示されます。クリックしようとしても逃げていきます。
shiftキーと黄ボタン(3ボタンなら中央)を押してください。halo が表示されますね。
| これでも立派なMorphです。 |
では次に、このMorphをユーザスクリプティングの側から操作してみましょう。
まず、左ボタンでクリックして Halo を出し、赤い表示の Menuをクリックします。
いろいろありますが、 debug から browse morph class でソースを見てみましょう。さっき入力したクラスが表示されます。(表の左)
Halo の debug からもいけます。(表の真中)
inspect したのが表の右になります。
![]() ![]() ![]() |
||
![]() ![]() |
![]() |
次に、スクリプトをみましょう。haloから青い目をクリックするViewerが表示されます。
"star turn by 5" の行をドラッグし、デスクトップの World にドロップします。スクリプタができて Viewerにも追加されます。(表の左)
このスクリプタのメニュ-から、 "show code texually" を選ぶと、右のスクリプトコードが編集できるようになります。(表の真中)
スクリプタの左から三番目の□をクリックしても同じことができます。
また、上の表の "browse player class" を選ぶと、Browser でソースが表示されます。(下の表の右)
カテゴリー Morphic-UserObjects の Model->Playler クラスのサブクラスとして、ユーザオブジェクトの Player38
ができ、そのメソッドとして実装されています。
ソースの値を100にして、acceptして見てください。当然ながら、スクリプタの表示も同時に変わります.
![]() |
![]() ![]() |
![]() |
この方法で、どんなMorphもチェックできます。たとえば、WatchMorph new openInWorld。
workspace で WatchMorph と打って、alt + b なんてのも愛用してます。
あとは、SystemBrowserでMorphをブラウズしていろいろ、遊んでください。
Morphic-Script カテゴリにスクリプト関係のソースが入ってています。
ダウンロード TestMorph.st
(以上)