funfunfun29
もうちょと「StringMorph」!
「StringMorph」を使ってもうちょっとあそんでみるでするよ。
タイマーとかカウンターとか作っちゃうお〜!!。
■タイマーを作るです。
まずはクラス定義です。
インスタンス変数に「count」「setCounter」「flg」を追加。
--------------------------------------------
StringMorph subclass: #TestMorph22
instanceVariableNames: 'count setCounter flg '
classVariableNames: ''
poolDictionaries: ''
category: 'MyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
「initialize」メソッドを追加しまする。
フォントは「ComicSansMS」、サイズは「45」、文字色はオレンジ色に設定。
タイマーの初期設定は30にして表示しておくってわけさ。
--------------------------------------------
initialize
super initialize.
self fontName: #ComicSansMS size: 45.
self color: Color orange.
setCounter _ 30.
count _setCounter.
self contents: count asString.
flg _ false.
self startStepping.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
試しにインスタンスをだしてみましょう。
--------------------------------------------
TestMorph22 new openInWorld
--------------------------------------------
Alt + d ( Cmd + d )
これいつまでたっても30のまんまなんで、動くようにインスタンスを追加しましょうか。
「flg」が「true」ならスタートします。「false」なら何もしない。(つまりストップね)
「count」が0になったら「flg」を「false」にしてビープ音を鳴らします。
(ストップのとき空ループしてるって事だから「Step」をスタート/ストップしたほうが
よかったかにゃ?・・・ )
--------------------------------------------
step
flg
ifTrue: [
count _ count - 1.
self contents: count asString.
count = 0
ifTrue: [
self beep.
count _ setCounter.
flg _ false].
].
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
--------------------------------------------
stepTime
^ 1000.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
マウスをクリックしたらタイマーをスタートさせます。(flgをtrueにするってわけね)
--------------------------------------------
mouseDown: evt
count _ count + 1.
flg _ true.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
お約束事ってことで。
--------------------------------------------
handlesMouseDown: evt
^ evt yellowButtonPressed not.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
メニューでタイマーの設定をできるようにしたいので、項目をメニューに追加します。
--------------------------------------------
addCustomMenuItems: aCustomMenu hand: aHandMorph
super addCustomMenuItems: aCustomMenu hand: aHandMorph.
aCustomMenu add: 'タイマーの設定' action: #setTimer.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
メニューを選んだときに実行されるメソッドを追加します。
ダイアログを出してそこで入力した数が「setCounter」に入るって感じね。
--------------------------------------------
setTimer
| n |
n _ FillInTheBlank request: '秒数を入力してね'
initialAnswer: '30'.
n = ''
ifTrue: [n _ '30'].
setCounter _ n asInteger.
count _ setCounter.
self contents: count asString.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
実際にメニューを出して確かめてみると
ちゃんとメニューの一番下の項目に追加されてるね。
メニューを選ぶとダイアログが出てくるので数値を入力することが出きるってわけさ。
■カウンターを作っちみようっと!
クリックすると加算されるという単純なやつね。
クラスを作ります。インスタンス変数「count」を追加。
--------------------------------------------
StringMorph subclass: #TestMorph23
instanceVariableNames: 'count '
classVariableNames: ''
poolDictionaries: ''
category: 'MyMorph'
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
「initialize」メソッドを追加するです。
フォントは「ComicSansMS」、サイズは「45」、色は茶色ね。
初期設定を「0」にして表示しておきます。
--------------------------------------------
initialize
super initialize.
self fontName: #ComicSansMS size: 45.
self color: Color brown.
count _ 0.
self contents: count asString.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
インスタンスをだしてみる。
--------------------------------------------
TestMorph23 new openInWorld
--------------------------------------------
Alt + d ( Cmd + d )
これこのままだとゼロのままね。
「mouseDown」メソッドを追加しまする。
マウスをクリックすると「count」に1加えるっす。
--------------------------------------------
mouseDown: evt
count _ count + 1.
self contents: count asString.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
これまたお約束事。<手抜きしてないか・・・おいら。
--------------------------------------------
handlesMouseDown: evt
^ evt yellowButtonPressed not.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
メニューで初期化する(0に戻す)メニュー項目を追加します。
--------------------------------------------
addCustomMenuItems: aCustomMenu hand: aHandMorph
super addCustomMenuItems: aCustomMenu hand: aHandMorph.
aCustomMenu add: 'カウンターを0にする' action: #setCounter.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
メニューを選んだとき実行されるメソッドを追加します。
「count」を0に戻してるってわけね。
--------------------------------------------
setCounter
count _ 0.
self contents: count asString.
--------------------------------------------
アクセプト。
Alt + s ( Cmd + s )
ちゃんとメニューの一番下の項目に追加されてるね。
▲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
- funfunfun28 last edited on 18 June 2007 at 5:36:02 am by localhost.localdomain
- funfunfun30 last edited on 24 July 2013 at 4:02:56 am by localhost