HyperCard tribute
アドレス帳
簡単シリーズも終わり、ここからは少し難度が上昇します。しかし、難しくなるのではなくややこしくなることに注目して下さい。一つ一つ理解していけば難しくはありません。 ここではアドレス帳を作ります。アドレス帳としての機能はもちろんの事、「New」ボタンを押すことでの新規データカード作成、表示画面・編集画面の分離により誤ってデータを消す危険を減らすなどの機能を持たせてあります。
基本となる構成は以下の4枚のカードです。 選択画面で人物リストの中から選択すると表示画面へ移動します。表示画面には、編集ボタンと削除ボタンがあり、編集ボタンを押すと編集画面へ、削除ボタンを押すと選択していた人のデータを削除します。削除時にはダイアログを出して、本当に削除をするのか確認をします。 スタックのスクリプト 私が作成するスタックには、基本形として以下のスクリプトを使用しています。openStackハンドラでは、スタックの使用時間をはかるため、現在の時間を納め、通常画面へと移動します。 closeStackでは使用時間の表示、サウンド機能のオン、スタックの整理を行います。この他にメニューを作成したときなどは、メニューをリセットしておくなども忘れてはなりません。
選択画面構成
フィールド「name」のスクリプト カード「選択画面」にある人物リスト、それがフィールド「name」です。人物名をクリックするとカード「表示画面」にデータを表示します。
4行目で、クリックされた行ナンバーを取り出します。ちなみに、clickNumはグローバル変数宣言をしています。
5行目では選択された名前を取り出し変数c_nameに入れています。このc_nameもグローバル変数です。 6行目でカード c_nameに移動します。このようにカード名の指定には変数を利用することもできます。 7行目から15行目までで、表示するデータを変数に追加代入します。名前以外のデータの場合は、データが入っていない可能性がありますので、データの入っていない行は飛ばして、データの入っている行のみ取り出します。 16行目で表示画面に移動し、7〜15行で作成した変数dataをフィールド「hyouji」に代入します。 ボタン「New」のスクリプト
新規追加者の名前とふりがなをダイアログで入力してもらいそのデータをそれぞれ変数に入れます。次にメニュー「コピーカード」「ペースト カード」を実行して新規カードを作り、カードの名前を「ふりがな」&「名前」に設定します。最後にカード削除を可能にして、名前とふりがなをフィールドに代入します。 10行目で、見本のデータカードに移動しコピー・ペーストをして新規のデータカードを作成する。domenu命令を用いることで、スクリプトからメニュー項目の実行をさせることができます。メニュー項目を指定するときは、メニューに登録されている項目名をしっかりと打ち込まないと実行させることができません。例えば、半角スペースやピリオドなどは見落としやすいですから気を付けて下さい。 13行目では新規カードの名前を設定しています。
13行目では新規カードの名前を設定しています。
フィールド「name」のフォント拡大縮小 縮小ボタン「A(ボタン番号1)」 拡大ボタン「A(ボタン番号2)」 拡大のスクリプト
縮小のスクリプト
9行目ではボタンを使用不可にしています。使用不可にすることで、ボタンの文字はグレーになり視覚的にも押せないことがわかるからです。 この拡大縮小ボタンは、ボタンでなくとも、フィールドや透明ボタンを用いても同じ役割をさせることができました。しかし、ボタンの使用不可、すなわち文字をグレーにする処理をさせるためにボタンをあえて使用したのです。少しでもユーザーに与える印象を良くするために、こちらの方法を選んだわけです。それだけ、ユーザーインターフェースが大事であるということです。 ボタン「Find」のスクリプト
もし、検索した結果何も見つけられなければ、ダイアログを表示してその旨を表示します。 4行目で、メッセージボックスにfind命令を書き込みます。スクリプトに直接find命令を書き込んでも良いのですが、そうした場合ある問題が現れることになります。それは、連続検索機能です。 通常の検索は、キーワードを見つければ結果を表示し、その結果が望むものでなければ次を検索します。しかし、スクリプトに書き込んだ場合は一度その行を実行すればそれで検索は終わってしまいますし、検索した結果何も見つけられない場合は放ったらかしになります。その様な理由から、メッセージボックスに命令を書き込むのです。これにより、リターンキーを押す度に検索をさせることができるようになります。 検索した結果、何も見つからなければHyperCardはエラーを返します。その結果はresultに入りますので、resultが空っぽでない場合(=エラーが出た場合)「検索キーワードは見つかりませんでした」とダイアログで表示します。 検索した結果、何も見つからなかった時、放ったらかしにするのはインターフェースとしては最低です。ユーザーは結果が見つからなかったのか、コンピュータが間違ったのかわからないからです。そして、このような事を考えさせた時点で、自分とコンピュータの間に壁を感じてしまうのです。 表示画面構成
ボタン「Edit」のスクリプト
ボタン「Delete」のスクリプト
7行目で、削除する人のデータカードを削除します。domenuという命令を用いれば、メニューに登録してある項目を実行させることができます。 9行目で、削除する人のデータをアドレスリストから削除します。delete文を用いていますので、変数clickNumの行を削除しその下にある行を上に詰めます。emptyを代入すると、空白行ができしまいますので注意が必要です。 確かにスクリプトの量は今までのスタックと比べると段違いに多くなりました。しかし、一つ一つ理解していけば難しくありません。難しく感じるのは他人が作ったスタックだからであって、このスタックが難しいのではないはずです。 体裁など気にせずに自分でどんどんスタックを作ってみて下さい。これらのスタックは人に見せるために効率のよいスクリプトを書くように心がけていますが、そうでないならばそんなことを気にする必要はないからです。自分でスタックを作れば大きな勉強になりますから是非作ってみましょう。 |