








Squeak Tips
Squeak、主に SqueakToys の Tips を持ち寄りましょう。
ビューワのフラップタブのアイコンが表示されなくなったら…
ThumbnailMorph recursionReset を do-it してみる。--sumim
挿入しようとしたフレーズタイルが不要だと気付いたら…
ビューワフラップ領域内でリリースするとピックアップ自体がキャンセルされる。--sumim
似たようなフレーズタイルをいくつもつくりたいとき
青クリックで(スクリプティ内部なら shift-青クリックで)フレーズタイル morph を選択し、緑ハロで複製。
複製直後の grab 状態ではスクリプティにドロップインできない(できてもしづらい)ので、いったんリリース後、再ピックアップ。--sumim
いろいろな morph の参照・代入フレーズを多用するとき
とりあえず自分のビューワにある同等参照・代入フレーズでスクリプトを組んでおき、[○○の]の部分に対象となる morph を参照するタイルを、そのオレンジハロからピックアップしてドロップインする。ビューワを行き来せずに済む。--sumim
morph を grab した状態で openInWorld する
Morph new openInHand を do-it。--sumim
Workspace から Morph を操作する
Workspace を開き、ウィンドウメニューの一番下にある
「create textual references to dropped morphs」
をチェックします。
捕らえたい Morph を Workspace にドロップすると、
ワークスペース変数にそのモルフを参照するためのインスタンス変数が表示されます。
そのインスタンス変数を使えば Workspace から Morph にメッセージを送る事ができるようになります。--三橋
早速 Morph を拾ってみよう(grab するといいます)
ワークスペース変数に Morph を捕らえて(前項参照)、
ActiveHand attachMorph: ワークスペース変数
とすれば Morph を拾えます。
マウスカーソルは ActiveHand です。( Morphic Project で表示されているモノは、すべてモルフです!)
他にもいろいろ試してみましょう!--三橋
ワークスペース変数の一覧を調べてみましょう
bindings に保管されています。
Workspace の DEBUG ハロから inspect model を選び、インスペクタを表示すれば見られます。
Morph を捕らえると bindings がどんどんふくらんでいきますので、
そのうち内容を初期化したくなってきます。
クリアするにはインスペクタで bindings に nil を代入してください。
(インスペクタのコードペインで bindings _ nil を do-it です)--三橋
タイルスクリプトみたいに Squeak から動かしてみよう
まずはサンプルプログラムです。
| ellipse |
ellipse _ EllipseMorph new openInWorld.
ellipse assuredPlayer.
ellipse player turn: 50
ポイントは assuredPlayer で Morph オブジェクトの UnscriptedPlayer を作成するところです。
作成した UnscriptedPlayer は Morph オブジェクトの extension に保持され、
以後は player でアクセスできます。
また、UnscriptedPlayer は Player のサブクラスで、タイルスクリプトで使用する
forward: や turn: などのメッセージはすべて理解できます。--三橋
「ツール」フラップタブを Workspace から開いてみよう
まずはサンプルプログラムです。
| flapTab |
flapTab _ World flapTabs
detect: [:each | each extension externalName = 'Tools']
ifNone: [nil].
flapTab ifNotNil: [flapTab showFlap]
フラップタブはワールド(Windowsのデスクトップにあたる場所)のサブモルフになっています。
ちなみに閉じるなら hideFlap を使います。(参照 FlapTab クラスの show & hide プロトコル)
Squeak ではマウスでできる事は、すべてワークスペースからもできます。
興味がわいたら、どんな処理をしているのかブラウザで調べてみましょう!--三橋
マウスを使わずにワークスペースを開いてみよう
Workspace new openAsMorphLabel: 'Workspace' inWorld: World
ワールドで、赤ハロ → デバッグ → inspect morph すると、ワールドはPasteUpMorph のインスタンスであることがわかります。
PasteUpMorph の mouseDown: メソッドからブラウザで追っかけて見ていくと、TheWorldMenu の openWorkspace にたどり着きます。
Workspace open
実はこれだけで開きます。
ワークスペースのスーパークラスである StringHolder のクラスメソッド open を参照してみましょう。--三橋
このページを編集 (3641 bytes)
 |
以下の 1 ページから参照されています。 |
This page has been visited 6076 times.