HyperCard tribute
スライドバーを作る
アナログな数値入力をする方法を考えてみます。年齢などのように正確な入力を必要とする場合ならば、ダイアログボックスや増減ボタンを備えた入力方法が適しています。しかし、データの幅が大きい場合や、感覚的な入力の方が好ましい場合、例えばウィンドウのスクロールバーやサウンドの音量などには、アナログ入力の方が直感的にわかりやすくなります。 そこで、ここではスライドバーを作ってみます。スライドバーとは、バーをドラッグする事で値を入力する方式のことです。
ボタンを1コ作り、ボタン名は slide にします。カード上には、グラフィックとしてメーターを書き込みましょう。
mouseDownのハンドラには、垂直のみに移動できるスクリプトを書き込んであります。 8行目ではボタンの座標を取り出し、変数bzに代入します。 9行目で、ボタン座標の2つ目のアイテム、すなわちy座標を取り出して、変数yに代入します。 10行目から14行目で座標の補正を行います。範囲外の値を範囲内に変更するためと、目盛りにぴったりと合わせるために、ある区間にある座標は目盛上にくるように補正するのです。 15行目で選んだスピードを取り出します。まず、初期値の値を引いてspeedデータを0に戻し、目盛幅で割ることでどのどのデータを選んでいるかを調べます。現在のデータは0から始まっていますので、最後に1をプラスします。 補正したy座標を16行目で、ボタン座標の2つ目のアイテムの位置に、また戻しておきます。 これで、スライドバーができました。 15行目の計算式が難しいと感じるならば、10行目から14行目までのthen節の中にput文でspeedを代入するようにすればよいでしょう。 次は水平に移動できるボタンです。今度は疑似アナログ入力をさせてみます。
mouseDownハンドラは、水平にドラッグするスクリプトを書いてあります。 11・12行目で、左右の範囲を越えてしまったボタンをチェックします。 13行目で、データの補正をしてあります。ボタンのX座標は100から初めてありますので、100を引いています。このスクリプトでは右に1ドット動かすことで、speedが1増えるようにしてありますが、この値を変更することでより大きな値や小さな値に対応することができるようになります。 |