HyperCard tribute

スクロールする文字


 フィールドに表示した文字をスクロールさせて電光掲示板のように表示させるスクリプトを作ってみます。これを使えば、現在マウスのカーソルが指し示しているオブジェクトのInformationをフィールドにスクロールさせるなど、ユーザーに対してインパクトのある情報を提供することができるようになります。

 それでは、フィールドの上にマウスのカーソルがある間、フィールド内の文字を左にスクロールさせるスクリプトを作ってみます。

 フィールドを一つ作り、名前を"スクロール"にして下さい。次にフィールドの設定画面を出し、ロックテキスト、行を回り込ませないをチェックします。ロックテキストをチェックする理由は、スクロール中にフィールド内の文字を編集されないようにするためで、行を回り込ませないをチェックする理由は、長い文章をスクロールさせるときに行が回りこまないようにするためです。フィールド内には、適当な文字を入れておいて下さい。

 では、以下のスクリプトをフィールド内に書き込みます。
 1 
 2 
 3 
 4 
on mouseWithin
  put char 1 of cd fld "スクロール" after cd fld "スクロール"
  put empty into char 1 of cd fld "スクロール"
end mouseWithin

 このスクリプトでは、以下の様なことをやっています。

 最初の「す」を最後尾につけ加えます。
 次に、最初の一文字目の位置にemptyを入れることで、一文字分だけ、左に移動させます。

 emptyはスペースとは異なるということに注意して下さい。


  • put char 1 of cd fld "スクロール" after cd fld "スクロール"
     2行目では、カードにあるフィールド "スクロール" の一文字目を、カードにあるフィールド "スクロール" の最後につけ加えます。
    「cd fld "スクロール"」
      の
    「char 1(一文字目)」
      を
    「cd fld "スクロール"」
      に
    「put 〜 after 〜 (最後尾につけ加える)」
    charで示される文字は、半角、全角を区別しません。一文字目が半角英数字であれ、全角の日本語であれ、取り出すことができます。


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

     このスクリプトでは、マウスが上に来るとスクロールしますが、メッセージハンドラを変えることで簡単に他の使い方にすることができます。
     例えば、mouseDownハンドラに変えてみれば、フィールドをクリックした時にフィールドが一つ移動する事になりますし、mouseStilldownハンドラにすれば、マウスを押し続けている間スクロールすることになります。