HyperCard tribute

自由自在にスクロール


 先のセクションを応用させて右にスクロールするようにしましょう。逆の考え方をすればいいだけですから簡単です。

 最後尾の「験」を最初につけ加えます。最初につけ加えることで、必然的に文字列は右に移動します。
 次に、最後の文字の位置にemptyを入れることでいらなくなった文字を消します。



 それでは、以下のような左、右のボタンを用意して下さい。それぞれボタンを押し続けることで、左、右へスクロールさせるようにしましょう。
 先の「スクロールする文字」のスクリプトと違う点は2つあります。
 1つ目はボタンを押し続けている間、スクリプトが実行されるという点です。以前のスクリプトはmouseWithin(=マウスがオブジェクト上に入ったら)でしたが、今回はmouseStilldown(=マウスボタンを押し続けている間、ずっと)を使用しています。
 2つ目は、右端の文字を左端に移動するという点です。今回、右端の文字を指定するために、lastを用います。フィールドにいくつの文字が入っているかわかっていれば、先のセクションの様にアラビア数字を用いて指定すれば良いですが、いろいろなメッセージに対応した柔軟なスクリプトを作るためにもこのような場合はlastを用いた方が良いでしょう。

 左のボタンには、先のセクションのスクリプトのメッセージハンドラの部分をmouseStilldownに変更したスクリプトを打ち込みます。

 右ボタンには、以下のスクリプトを打ちこんでください。
 1 
 2 
 3 
 4 
on mouseStilldown
  put last char of cd fld "スクロール" before cd fld "スクロール"
  put empty into last char of cd fld "スクロール"
end mouseStilldown

  • put last char of cd fld "スクロール" before cd fld "スクロール"
     2行目では、最後の文字を最初につけ加えます。最後の文字を指定するためにlastですが、先のセクションと少し書き方が違います。5文字目というような場合はchar 5と、文字位置を後に書く必要がありました。しかし、lastの場合は前に書かなければなりません。
     lastは選択子と呼ばれ、他にfirstからtenthまでの10までの位置を示す番号、ランダムに位置を指定するany、真ん中の位置を指定するmiddleがあります。
    「cd fld "スクロール"」
      の
    「last char(最後の文字)」
      を
    「cd fld "スクロール"」
      に
    「put 〜 before 〜 (前につけ加える)」


  • put empty into last char of cd fld "スクロール"
     3行目では、最後の文字を消します。
    「empty(空っぽ)」
      を
    「cd fld "スクロール"」
      の
    「last char (最後の文字)」
      に
    「put 〜 into 〜 (上書き代入する)」

     これで左右に自由自在にスクロールするフィールドを作ることができました。mouseStilldownをmouseUpやmouseDownに変えることで一文字ずつ移動させてみたり、他のハンドラからこのハンドラを呼び出したり、スクリプトに書き込んだりすることで、自由自在にスクロールを管理することが可能となります。