OBY 9
オビーの形を変える
見た目はやっとこさ顔の形になってきたオビーですが中身は空っぽなのね・・・
各パーツにいろいろな機能をつけて、
じょじょにおばかなオビーをおりこうさんにしてあげましょう!!
(おばかは、おいらだったりするのですが・・・)
まずは形をいろいろ変更できるようにしてやるです。
■メソッドを追加する
オビーの顔の形をかえられるようにするです。
● Oby > other > rectangleFaceメソッド
オビーはデフォルトは楕円な顔なんだけど
まずは四角顔になるようにメソッドを用意してやるです。
現在の顔の大きさをゲット
顔の色をゲット
「face」を削除
RectangleMorphを生成
大きさを元の大きさに合わせる
枠線は1
色を元の色に合わせる
オビーのサブモーフにする
位置をセンターに
--------------------------------------------
rectangleFace
| s c |
"現在の顔のサイズと色を取得"
s _ self face extent.
c _ self face color.
"現在の顔を削除"
self face delete.
"顔の生成"
face _ RectangleMorph new.
face extent: s.
face borderWidth: 1.
face color: c.
self addMorphBack: face.
face align: face center with: self center.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
● Oby > accessing > faceメソッド
インスタンス変数「face」にアクセスできるよう「face」を返すメソッドを追加。
--------------------------------------------
face
^ face
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
★インスタンスを出して試してみる
--------------------------------------------
boby _ Oby new openInWorld.
boby rectangleFace
--------------------------------------------
Alt + d ( Cmd + d )
四角顔になりましたね。
● Oby > other > sketchFaceメソッド
今度はスケッチモーフの顔になるようにしてやりましょう。
スケッチモーフは拡大しないほうが綺麗なんで元の大きさとか色はゲットしません。
「face」を削除
SketchMorphを生成
オビーのサブモーフにする
位置をセンターに
--------------------------------------------
sketchFace
"現在の顔を削除"
self face delete.
"顔の生成"
face _ SketchMorph new.
self addMorphBack: face.
face align: face center with: self center.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
★インスタンスを出してみる
--------------------------------------------
boby _ Oby new openInWorld.
boby sketchFace
--------------------------------------------
Alt + d ( Cmd + d )
おややん!!パレット顔になっちゃったっすね。
SketchMorphのデフォルト画像はパレットなのねん。
ハロでペイントモードにして好きな形に顔を描くです。
● Oby > other > polygonFaceメソッド
さてさてお次は多角形の顔に挑戦だよん。
元の大きさと色をゲット
「face」を削除
PolygonMorphを生成
もとの大きさ(extent)をベースにして各ポリゴンのポイント設定
枠線は1
枠の色は黒
元の色にする
オビーのサブモーフにする
位置をセンターにする
--------------------------------------------
polygonFace
| s c |
"現在の顔のサイズと色を取得"
s _ self face extent.
c _ self face color.
"現在の顔を削除"
self face delete.
"顔の生成"
face _ PolygonMorph new.
face setVertices: (Array with: 0@0 with: (s x)@0 with: (s x // 2)@(s y)).
face borderWidth: 1.
face borderColor: Color black.
face color: c.
self addMorphBack: face.
face align: face center with: self center.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
★インスタンスを出してみる
--------------------------------------------
boby _ Oby new openInWorld.
boby polygonFace
--------------------------------------------
Alt + d ( Cmd + d )
わっはっは。目とか飛び出てるし・・・。
Shift+クリックしてポイントハンドルを表示して好みの形に変えてみよ〜!!
● Oby > other > ellipseFaceメソッド
でで最後に元に戻すために楕円にするメソッドも用意しておきましょう!
これはRectangleFaceのときとほとんど同じね。
新しく生成するのをEllipseMorphに変えるだ〜けね。
--------------------------------------------
ellipseFace
| s c |
"現在の顔のサイズと色を取得"
s _ self face extent.
c _ self face color.
"現在の顔を削除"
self face delete.
"顔の生成"
face _ EllipseMorph new.
face extent: s.
face borderWidth: 1.
face color: c.
self addMorphBack: face.
face align: face center with: self center.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
★インスタンスを出してみる
--------------------------------------------
boby _ Oby new openInWorld.
boby ellipseFace
--------------------------------------------
Alt + d ( Cmd + d )
元の丸顔に戻ったとはいえないね。でぶでぶ顔じゃん。
これはPolygonFaceにしたとき形を変えたじゃん!その時extentが変更されたからだね。
まあ、こ〜ゆ〜ふうにして目とか鼻とかも形が変えられるように
ガ〜シガシとメソッドを追加しちゃえばい〜じゃん!!
・・・ってのんきに考えておったのでありますが・・・・・・
オ〜マイ、ガ〜〜〜〜!!
これじゃ、だ〜めじゃん!!
そのわけはお次のページで。
▲PREV ------ ● TOP ● ------ NEXT▼
■ MEMO ■
Links to this Page
- I BOBY last edited on 28 April 2004 at 8:57:55 pm by tk0005-202x210x196x109.ap-TK.usen.ad.jp
- OBY 8 last edited on 18 June 2007 at 5:28:17 am by localhost.localdomain
- OBY10 last edited on 22 March 2016 at 4:07:05 pm by localhost