• ベストアンサー

FLASH5でテキストのスクロール

FLASH5を使ってホームページを作っているのですが、テキストファイルをテキストエリアに読み込んだ時(エリアに入りきらないこと前提)にボタンを「押しつづけている間スクロールし続ける」ようなものを作りたいのですが、どのようなアクションスクリプトを書けばよいのでしょうか?ボタンを押した時、離した時に指定行スクロールさせることは出来たのですが。。。。 アドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

このように考えてはいかがでしょう。 ボタンが押された時に、ボタンが押されたという情報を変数(このような使い方をする変数は、フラグとも呼ばれます)に記録しておき、ボタンが離された時にはその情報をクリアします。 このフラグの値を常時監視して、ボタンが押されている時だけスクロールを実行するようにします。 ボタンが押された時に発生する press イベントは、押されたその時、1回しか発生しません。従って、ボタンに設定したアクションが実行されるのも、その時1回きりです。 一方ムービークリップイベントの enterFrame イベントは、ムービークリップがステージにある間、常に発生しています。フラグの値を監視して、特定の値になった時だけ実行するような処理は、このイベントを利用して作ります。 なお、enterFrame イベントはフレームレート分の1秒ごとに発生し、スクリプトもそのタイミングで実行されます。 特に大きなフレームレートのムービーの場合、enterFrame イベントが発生する度にスクロールさせてしまうと、スクロールが速すぎて使いにくくなることがあります。 もう1つ変数を用意し、enterFrame イベントが発生するごとにカウントを取ります。このカウントが一定の値になった時にだけスクロールする、というように考えると、スクロールの速さを調整することができます。 Flash 5 のムービークリップでは、press や release イベントが検出できません。 しかし、enterFrame イベントはムービークリップでしか使えません。ムービークリップでも press や release イベントを検出できるようにするには、透明なボタンを重ねたムービークリップを用意します。 ムービークリップを1つ、新規に作ります。絵を描いたら、これをとりあえずボタンシンボルに変換します。 レイヤーを分け、このシンボルを「同じ位置にペースト」を利用して、同じ位置にコピーして重ね合わせます。「情報パネル」で数値を入力して合わせてもいいでしょう。 上になっているボタンは、「効果」パネルのリストで「アルファ」を選び、0%にして透明にします。 下の方になっているボタンは単なる絵として使いますから、「修正」→「分解」で、普通の描画オブジェクトにしておきます。 スクロールボタンが押されているかどうかの状態をフラグに保存するスクリプトを、透明なボタンに設定します。 フラグとして使う変数を、仮に press_flg という名前にしますと、 (↓以下のスクリプトをコピーして使う場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  on(press)  {   //押されたという情報を記録   press_flg = true;  }  on(release)  {   //フラグをクリア   press_flg = false;   //スクロールウェイトをリセット   scroll_wait = 0;  } scroll_wait という変数は、スクロールの速さを調整するための待ち時間の計測(ウェイト)に使います。ボタンが離された時は、このウェイトも0にリセットします。 これで、スクロールボタンのシンボルは完成です。 ステージにスクロールボタンとテキストエリアを配置します。 Flash 5 では、テキストエリアのスクロールを制御するには、テキストエリアで表示する変数名.scroll といった表記をします。 テキストエリアで表示する変数を、仮に message という名前だとし、メインのタイムラインにあるものとしますと、ステージにあるスクロールボタン(のムービークリップ)からこの変数を見ると、テキストエリアの行数を制御するには _root.message.scroll あるいは _parent.message.scroll となります。 この値を、スクロールボタンで発生する enterFrame イベントを利用して操作します。 上方にスクロールさせるボタンに up 、下方にスクロールさせるボタンに down というインスタンス名を付けるとすると、それぞれに設定するスクリプトは、大体、次のようになります。  ・ up / down の両方に共通するスクリプト   onClipEvent(load)   {    //フラグの初期化    press_flg = false;    //スクロールウェイトの初期化    scroll_wait = 0;   }  ・ up にだけ設定するスクリプト   onClipEvent(enterFrame)   {    //ボタンが押されている場合    if( press_flg )    {     //3フレームに1度、スクロールさせる     scroll_wait++;     if( scroll_wait >= 3 )     {      //上にスクロール      _root.message.scroll--;      //最上行の場合はスクロールを止める      if( _root.message.scroll <= 0 )      {       _root.message.scroll = 1;      }      //ウェイトのクリア      scroll_wait = 0;     }    }   }  ・ down にだけ設定するスクリプト   onClipEvent(enterFrame)   {    //ボタンが押されている場合    if( press_flg )    {     //3フレームに1度、スクロールさせる     scroll_wait++;     if( scroll_wait >= 3 )     {      //下にスクロール      _root.message.scroll++;      //最下行の場合はスクロールを止める      if( _root.message.scroll > _root.message.maxscroll )      {       _root.message.scroll = _root.message.maxscroll;      }      //ウェイトのクリア      scroll_wait = 0;     }    }   } load イベントは、ムービークリップがステージに登場した、その時1回だけ発生するイベントです。この特徴を利用して、ボタンが押されたかどうかのフラグとスクロールの速さを制御するカウンタを初期化します。 スクロールの速さを変えたいときは、  if( scroll_wait >= 3 ) の3の部分を変更してください。数字が大きいほど遅くなります。 テキストエリアやスクロールボタンが何かのムービークリップの中にあるなど、階層の構造に違いがある場合は、ターゲットパスにご注意ください。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

marine3333
質問者

お礼

詳しい説明ありがとうございました。 無事思ったとおりのスクロールボタンが完成しました。 ほんとに感謝してます!! ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストスクロール

    Flash初心者です。 http://www.flashiroha.com/script/as5.html のサイトを参考にテキストスクロールを作成したのですが、 1.ボタンを押している間ずっとテキストをスクロールさせるようにするにはどうしたらいいでしょうか?(現状ワンクリック1行のスクロールでカチカチ押さなければならない。) 2.外部読み込みのテキストで、文字の色やサイズを部分的に変えたいのですがテキストファイルにhtmlを打ち込んでも全く反映されず、そのタグ自体が画面に表示されてしまいます。どうすればいいでしょうか?

  • Flash コンポーネントのUIScrollBarのhtmlファイルで

    Flash コンポーネントのUIScrollBarのhtmlファイルでの表示について。 現在Flash CS4を使用してフルフラッシュでホームページを制作しようとしています。 Flashで外部テキストを読み込んだダイナミックテキストに、 コンポーネントのUIScrollBarを取り付け、読み込んだ外部テキストをスクロールさせたいとおもっています。 ダイナミックテキストエリアにUIScrollBarを取り付けてパブリッシュしてみると SWFファイルではきちんとスクロールバーが付いて作動するのですが、 htmlファイルではスキンは表示されているのですが、スクロールバーや上下ボタンが表示されず、テキストのスクロールができません。 検索してみるもいまいち原因がわからず... 作業環境は Mac OS X 10.4.11 Flash CS4 PROFESSONAL よろしくお願いします。

  • Flashテキスト入力

    Flashテキスト入力で、IDをユーザーが入力して、ENTERボタンを押すと入力画面が消えて、次へ進むことができる。 (この時、先程入力したID名が右上に表示された状態にしたい。) アクションスクリプト2で作りたいのですが・・・、すみません。かなり初心者なのでよろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHで外部テキストを表示するには

    こんにちは。 現在FLASHで、あるボタンをクリックすると吹き出しが出て、その吹き出しの中に外部テキストを表示させる、というものを作ろうとしています。 吹き出しはムービークリップシンボルで作成し、ダイナミックテキストブロックを配置したフレームに「loadVariablesNum("text1.txt", 0);」というアクションを追加しました。 そしてボタンには「on (release)」イベントを追加し、クリックすると吹き出しシンボルが表示されるようにしました。 その結果、ボタンをクリックすると吹き出しは表示されるのですが、テキストが全く表示されません。スクリプト内で指定した外部テキストのファイル名および階層は間違っていないようです。 このように、うまく外部テキストを読み込みできない原因として、何か考えられることはありますでしょうか? 説明が下手で申し訳ありませんが、ご教示いただけると助かります。 よろしくお願いいたします。

  • テキストスクロール(外部ファイル読み込み)

    FLASH8を使ってます。 FLASHを勉強中なのですが、アクションスクリプトをいじるようになるとどうしても恐々というか…成功しないでいます。 http://www.flashiroha.com/script/as5.html ↑を参考の『TextField及びスクロールボタンを作成、使用する方法』を作ってるのですがプレビューをするとエラーが出るんです。 『**エラー** シーン = シーン 1, レイヤー = レイヤー 4, フレーム = 1 :行 1:マウスイベントはボタンインスタンスでのみ使用できます。 on(press) { **エラー** シーン = シーン 1, レイヤー = レイヤー 4, フレーム = 1 :行 2:シンタックスエラー   _root.textbox.scroll--; **エラー** シーン = シーン 1, レイヤー = レイヤー 4, フレーム = 1 :行 3:シンタックスエラー   } **エラー** シーン = シーン 1, レイヤー = レイヤー 3, フレーム = 1 :行 1:シンタックスエラー   on(press) { ActionScript エラー数 :4 報告済みエラー :4』 です。 指定してあるとおりにしてるつもりなんですがどうしてエラーがでるのか、 外部ファイルを読み込めないでいるのか分かりません。 どなたか教えていただけませんか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • フラッシュでtextファイルを読み込ませるアクションで問題!?

    私はフラッシュを始めたばかりの素人です。 フラッシュをいろいろとHPに組み込みたいと思いました。が、メンテナンスするのがいちいち面倒なのでどうにかできないかと考えた結果、textファイルを読み込ませんるという方法でした。  もちろんtextファイルで編集できるのは文字だけだとわかっていますが、少しはメンテナンスがしやすくなりますのでとてもよいと考えました。 やってみて問題がおきました。 結果は「やけにSWFファイルが重くなる(2Mちょっと)になることと、ネット上で動かすと表示されなこと」です。 いろいろ試しましたが、私が思うにtextファイルを読み込むアクションスクリプトを使うとやけに重くなってしまうような結果になりました。 textファイルに読み込ませる文章はせいぜい40文字程度でしかないのにもかかわらずローカルで表示させた場合に出来るSWFファイルの要領が2.1Mにもなりました。 それをネットにアップさせて表示させようとした場合は接続が永遠に続き結局表示することが出来ません。 textファイルを読み込ませるための何かコツが必要なのでしょうか? また、このような物と認識すればよいのでしょうか? どうか具体的なソース、アドバイスをいただけないでしょうか。お願いします。 ▼読み込み時に使用したアクションスクリプト onClipEvent(load){ this.loadVariables("oyamanew.txt"); }

  • テキストファイルを自動でスクロールするソフト

    テキストファイルを自動でスクローするソフト ホームページのように。マウスのホイールボタンを押し。マウスをしたに移動すれば。動でスクロールしますが。テキストファイルでも同じようなことができるのでしょうか? テキストエデッターは秀丸を使っていますが。秀丸では。ホイールボタンを押してやる、自動スクロールはできないのでしょうか?

  • FLASH外部テキスト読込 タグを読まない

    FLASHの外部テキスト読み込み お世話になります。 アクションスクリプトがあまり分かりません(^^;) FLASH MXの外部読み込みで質問があります。 ボタンクリックで外部テキストとjpgを読み込みたいのです。 Scrollber(コンポーネント)のtarget TextFirldに ダイナミックテキストのインスタンス名を入れると スクロールはするのですが、txtファイル内のタグが 露出してしまいます。 target TextFirld、ダイナミックテキストからそれらを 除くとタグは効くようになるのですが、今度は長文でも スクロールバーが動かなくなります。 ◆ステージの1フレーム目 -------------------------------------- System.useCodepage = true; disp.condenseWhite = true; loadVariables("text/01.txt", "bun"); loadMovie("img/a.jpg", "jpeg"); ◆テキスト1ボタン -------------------------------------- on (press) { loadVariables("text/01.txt", bun); loadMovie("img/a.jpg", jpeg); } ◆テキスト2ボタン -------------------------------------- on (press) { loadVariables("text/02.txt", bun); loadMovie("img/b.jpg", jpeg); } ◆ムービークリップ名:jpeg ◆ダイナミックテキストインスタンス名:bun タグが効くようになるにはどうすればよいでしょうか? どうぞよろしくお願いしますm(_ _)m

  • Flash スクロールバー表示

    環境 Win OS XP   Macromedia Flash MX Professional 2004 外部テキストを読み込んでいるんですが ◆スクロールパーツがうまく表示されない …スクロールバーの部分が上下に長い ◆スクロールの反応が悪い …マウスでスクロールできず上下の矢印を押さないと移動できない ◆*.flaだと上下の矢印も表示されない白い棒のまま。 ◆外部テキスト(HTML)が全部スクロールで表示しきれない …もっと文章があるんですがスクロールできるのは数行止まりで それ以上、下へ行かないんです。 サイトや本など色々見たのですが確証あるものがなくご指導いただきたく思いますので よろしくお願いします。 アクション部分は onClipEvent (load) { this.loadVariables("txt.html"); } onClipEvent (data) { scrollbar.setScrollTarget(txt.html); } 初心者なモノで説明不足かもしれませんが どうぞよろしくおねがいします。

    • ベストアンサー
    • Flash
  • Java Script、GGI、Flash?どれがいい?

    プログラマーじゃないので、あまり詳しくありません ホームページ上でテキストのランダム表示を行いたいです。 今、何でつくるか、考えているんですが、 何でつくるのがベストでしょうか? Java Script、GGI、Flashなどあると思うんですが。 当方、Flash(Action Scriptも)は使い慣れているんですが、 なんか重たくならないのか、多少心配です。