funfunfun20
ポイントの座標をいじってみるだす
三角形の多角形モーフ作っただけじゃつまんないんでしょ?
やっぱ各ポイントを移動させたり追加できるようになりたいじゃん。
で、ど〜すんのよ?(って誰に聞いてんだ?)ポイントは配列になってるんでそれいじりゃいいってわけね。
■インスタンス変数を追加
とにかくポイントを一箇所移動させてアニメーションさせてみるです。
アニメーションの切り替え用に「flg」ちゅうインスタンス変数を
追加するです。
--------------------------------------------
PolygonMorph subclass: #TestMorph10
instanceVariableNames: 'flg '
classVariableNames: ''
poolDictionaries: ''
category: 'MyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
■initializeを変更
初期設定に「flg」の初期設定とアニメーションをスタートさせる2行を
追加するです。
--------------------------------------------
initialize
super initialize.
vertices _ Array with: 0@0 with: 100@0 with: 100@100.
borderWidth _ 1.
color _ Color red darker.
borderColor _ Color black.
closed _ true.
smoothCurve _ false.
arrows _ #none.
self computeBounds.
flg _ true.
self startStepping.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
■stepメソッド追加(位置変更)
ポイントの座標が配列で「vertices」に設定されてるので
その座標を取り出して差し替えちゃえば良いんじゃない?
「flg」が「true」なら2番目の座標を取り出して
「pt + 100@0」と入れ替えまする。
「flg」が「flse」なら元に戻しまする。
--------------------------------------------
step
| pt |
pt _ self getVertices at: 2.
flg ifTrue: [
self vertices at: 2 put: pt + (100@0).
flg _ false]
ifFalse: [
self vertices at: 2 put: pt - (100@0).
flg _ true].
self computeBounds.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
■stepTimeメソッド追加
あんまり動きを速くするとなにやってんだかわかんないので
1000くらいにしてゆ〜くりとアニメするようにしたです。
--------------------------------------------
stepTime
^ 1000.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
どうすか?2番目のポイントが横に伸びたり縮んだりしまっしゃろ?
■stepメソッド変更(ポイント追加)
今度はポイントを追加したり削除して四角形と三角形を交互に
繰り返すっていうアニメーションをやってみませう。
「step」メソッドを書き換えちゃうです。
--------------------------------------------
step
| pt v |
pt _ self getVertices at: 3.
v _ self vertices asOrderedCollection.
flg ifTrue: [
v addLast: pt - (100@0).
flg _ false]
ifFalse: [
v removeLast.
flg _ true].
self setVertices: (v asArray).
self computeBounds.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
どうやら「vertices」は「Array」型らしいですな。今回は「addLast」と「removeLast」を
使いたかったんで一度「Array」を「OrderCollection」に変換してまする。
(これkenkさんのプロジェクトを見て「あ、な〜るほど」とわかったんだけど、
はじめはけっこうてまどったです。<kenkさんに感謝)
▲PREV ------ ● TOP ● ------ NEXT▼
■ MEMO ■
Links to this Page
- FunFunFunMorphic last edited on 25 March 2004 at 5:25:44 am by tk0005-202x210x196x109.ap-TK.usen.ad.jp
- funfunfun19 last edited on 17 June 2007 at 7:25:54 am by localhost.localdomain
- funfunfun21 last edited on 30 November 2009 at 9:49:08 am by localhost.localdomain