funfunfun23
ウィンドウはどう〜するよ?
ウィンドウをつくるのはどうやるんだろうって調べてみたんだけど、
参考になりそうなものがあまりないんだよね。
っていうかあるにはあるんだけど、今のおいらの頭ではよくわからんちんなのだ。
でも単純なやつならできそうな感じもするんでいざ挑戦!ってね。
これまた「モーフ妄想メモ」でこうゆうモーフが欲し〜い!!
って書いてたやつに近づきたいもんです。
■クラスを作るです
SystemWindowを親に新しいクラスを定義だよん。
--------------------------------------------
SystemWindow subclass: #TestMorph12
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'MyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
■インスタンスを出してみる
確認の為Workspaceに下記のコードを書いてドゥーイット。
--------------------------------------------
TestMorph12 new openInWorld
--------------------------------------------
Alt + d ( Cmd + d )
おお!!ウィンドウが出てきましたな。でもこれってウィンドウの枠だけっす。
もちろん基本的なボタン類とウィンドウタイトル「UntitledWindow」はついてるよん。
■メソッドを追加ですな
色の変更とウィンドウの中に「PastUpMorph」(遊び場「Playfield」のことですな)を
入れちゃいましょう。<サブモーフにするって事ね。
「frame: (0@0 extent: 1@1)」ってのは左上が「0@0」で左下が0?「1@1」ってことなんすけど
この場合「1」ってのは100%ってことみたいっすね。
--------------------------------------------
initialize
| t1 |
super initialize.
t1 _ PasteUpMorph new extent: self width @ self height.
self addMorph: t1
frame: (0 @ 0 extent: 1 @ 1).
self setLabel: 'Test12'.
self setWindowColor: (Color
r: 0.5
g: 0.8
b: 0.8)
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
インスタンスを出すと水色の遊び場ウィンドウの出来上がり!!
ウィンドウの中は「PastUpMorph」だよん。
Alt + d ( Cmd + d )
試しに「部品」フラップからいろいろ引っ張り出してウィンドウの中にぶっこんじゃって見ましょう。
ウィンドウを移動してもちゃんといっしょについてくるだすな。大成功。(・・なのか?)
▲PREV ------ ● TOP ● ------ NEXT▼
■ MEMO ■
Saturday, 21 February 2004, 8:28:33 am
なかなか面白い世界に突入してきましたね。
参考になるものがあまり無いように見えるのは、みんな SystemWindow を継承していないからだと思います。新しい種類のオブジェクトを作るには、継承(子供を作る)と委譲(組み合わせる)という二つの方法があって、SystemWindow は典型的な委譲を使うパターンです。例えばこんな風に
| window |
window := SystemWindow labelled: 'Play field window'.
window addMorph: PasteUpMorph new
frame: (0 @ 0 extent: 1 @ 1).
window setWindowColor: (Color blue).
window openInWorld.
委譲を使うと、新しいクラスを作らなくて済みますし、どっちの子供にするべきか分からないような場合も悩まなくて済みます。委譲のあるコードのサンプルを見つけるには、クラス名を選択して reference to it (N) です。
--tak
- ありがとうございます。委譲というのはPluggableっていうやつのことですよね?Pluggableはまだいいかなと思ってたのでサンプルはほとんど目を通してなかったです。これを機にその世界にちょっと足を踏み込むのもいいかなと思ってます。ところで今回のおいらの無謀な試みはあまり進められない方向なのでしょうかねえ?<SystemWindowを継承するってやり方ですが。--thoru
Saturday, 21 February 2004, 1:38:17 am
まあこんな風に単純なウィンドウで遊びたかったっす。本格的なものを作る場合はどうも様子がちょこっとちがうみたいですな。さらなる調査を続行!!ってか。
Links to this Page
- FunFunFunMorphic last edited on 25 March 2004 at 5:25:44 am by tk0005-202x210x196x109.ap-TK.usen.ad.jp
- funfunfun22 last edited on 17 June 2007 at 7:08:48 am by localhost.localdomain
- funfunfun24 last edited on 18 June 2007 at 5:35:14 am by localhost.localdomain