• 締切済み

画面全体にスクロールバーをつけるやり方

画面全体にスクロールバーをつけるやり方をどなたかお教えいただけませんでしょうか? そしてそのスクロールバーが一番下までスクロールした時点でボタンが可動するような仕組みを作りたいのですが… どなたか宜しくお願い致します。 僕の使っているものはMacromedia Flash 8です。

  • Flash
  • 回答数1
  • ありがとう数1

みんなの回答

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

_root の _x と _y プロパティを書き換えるとムービー全体が移動します。 ただし、スクロールバーやボタンも _root の子であるために同時に移動してしまいます。 そこで、ムービー全体を移動した後で、スクロールバーとボタンの座標を_root が移動した分だけ元に戻すようにします。 画面全体が移動してもスクロールバーとボタンだけは常に同じ位置に留まり続けるので、ムービー全体がスクロールしたように見えるかと思います。 作る前にレイアウトをきっちり決めてください。 スクロール対象は1番下に透明な四角形(もしくは背景用の画像など)を敷いてこの上に文字や画像を並べると、大きさを考えやすくなります。 ステージの一部をボタンを表示する領域にします。 このボタンは、ムービークリップの中に入れ子にします。 親であるムービークリップは先のコンテンツと同じ要領で、1番下に背景を敷いてその上のレイヤーにボタンを配置します。 ステージに配置した時に、この背景は余白としての役割を果たします。 スクロール対象の上にムービークリップの背景部分が上書きされて表示されるので、ボタンの表示部分とスクロールする部分が違う部品になっているように見えるというわけです。 ------------------------------------------------------------------- とりあえず、以下のレイアウトの作例を考えます。 スクロールは縦方向とします。  ・ステージの大きさは幅×高さ = 200 px × 150 px  ・コンテンツ表示領域は高さが 100 px ( Y = 0 ~ 99 )、残りはボタンを常時表示しておくためのスペース  ・スクロール対象であるコンテンツは高さが 500 px(表示領域の5枚分のサイズ) 今回の作例では重ね順が大切です。 重ね順はレイヤーの順序を利用して決めます。 ムービーのレイヤーは次のような構成にします。 この重ね順は編集時のレイヤーの順序と同じです。  アクション  :スクリプトを書きます。  スクロールバー: UIScrollBar コンポーネントのインスタンスを置きます。  ボタン表示領域:ボタンのムービークリップ(ボタン+余白)を置きます。  コンテンツ  :スクロールさせるテキストや絵などを置きます。  背 景    :スクロール対象の大きさを固定させるための背景です。 まず、”背景”レイヤーに 200 px × 500 px の、線のない四角形を描画します。幅は特に関係ありませんから、表示領域と同じサイズにしなくても結構です。 これより上のレイヤーに文字や絵などを描画してください。 ”コンテンツ”と”ボタン表示領域”レイヤーの間であれば、レイヤーを分けて置いても構いません。 次に、UIScrollBar コンポーネントのインスタンスをステージ右上に配置します。配置するレイヤーは”スクロールバー”です。 「プロパティ」パネルのH:の項目に数値を入力し、表示領域の高さ(この例では 100 px )に合わせてください。 スクロールバーもスクリプトで制御するので、インスタンス名が必要です。仮に” sc_bar ”とします。 ムービークリップシンボルを1つ、新規に作成します。 シンボルの1番下のレイヤーに 200 px × 50 px の塗りだけの四角形を描画し、これより上のレイヤーにボタンのインスタンスを配置してください。 このボタンにインスタンス名を付けてください。仮に” btn ”とします。 できたムービークリップのインスタンスを、”ボタン表示領域”レイヤーの、ステージの下端( X = 0 、Y = 100 の地点)に配置します。 これにもインスタンス名を付けてください。仮に” btn_area ”とします。 以上で準備は完了です。 次はスクリプトを書きます。 ************************************** スクリプトは全て、メインのタイムラインに書きます。 (↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)  /////////////////////////////////////////////////////  //初期設定  /////////////////////////////////////////////////////  //表示領域とスクロール対象の高さ  area_h = 100;  object_h = 500;  //1ページあたりの表示量と、スクロールバーが返す最大値  page_h = area_h;  sc_max = object_h - area_h;  //もとの画面位置とスクロール量を記憶する変数  org_y = 0;  scroll_y = 0;  /////////////////////////////////////////////////////  //スクロールバーの設定とスクロール処理  /////////////////////////////////////////////////////  //スクロールバーが返す値を設定  sc_bar.setScrollProperties( page_h , 0 , sc_max );  //スクロールバーが動いた時の処理  sc_listener = new Object();  sc_listener.scroll = function( info:Object )  {   var sc_obj;   //スクロールバーの参照を格納   sc_obj = info.target;   //スクロール前のムービー全体の位置を保存しておく   org_y = _root._y;   //スライダの位置に応じて、画面全体を縦に移動   _root._y = -sc_obj.scrollPosition;   //画面が移動した分だけ、   //スクロールバー自身とボタン表示領域の位置を戻す   scroll_y = org_y - _root._y;   sc_obj._y += scroll_y;   btn_area._y += scroll_y;   //スライダが一番下に来ていたらボタンを有効にする   if( sc_obj.scrollPosition >= sc_max )   {    btn_area.btn.enabled = true;    btn_area.btn._alpha = 100;   }   //それ以外の時は無効にしておく   else   {    btn_area.btn.enabled = false;    btn_area.btn._alpha = 30;   }  };  //リスナーオブジェクトを登録  sc_bar.addEventListener( "scroll" , sc_listener );  /////////////////////////////////////////////////////  //ボタンの初期設定  /////////////////////////////////////////////////////  //ボタンを無効(無効の間は薄表示)にしておく  btn_area.btn.enabled = false;  btn_area.btn._alpha = 30;  //ボタンが押された時の処理  btn_area.btn.onRelease = function()  {   /*ここに、ボタンがクリックされた時の処理を書く*/  }; マスクを使っていないため「ムービープレビュー」では画面からはみ出す部分が見えてしまい、分かりにくいかもしれません。 「パブリッシュ」で HTML ファイルに配置してブラウザで再生するか、スタンドアロンプレイヤーで確認してみてください。 ************************************** スクロールバーの原理は、スライダが動いた方向と逆の向きにスクロール対象を動かすというものです。 UIScrollBar では、スライダの位置に応じたある値を取得できる仕組みになっています。 この値そのものに特定の意味はありません。 何の意味を持たせるかは自由です。 例えば、テキストフィールドと関連付けた時に返してくる値はテキストフィールドの行で、範囲は 1 ~ maxscroll です。 テキストフィールドに関連付けると、返す値の範囲はテキストフィールドの大きさやフォントサイズ・行数などから自動的に設定されます。 スライダを操作すると、スクロールバーはスライダの座標から返す値を割り出します。そして、関連付けられているテキストフィールドの scroll プロパティを書き換え、該当する箇所を変更しています。 スクロールバーが返す値の範囲は setScrollProperties というメソッドで設定できます。 今回はスクロールバーで動かす対象がテキストフィールドではないため、値の範囲を自分で定義しなければなりません。 スクロールバーからどんな値を受け取り、それをどのようにスクロール処理に反映するかが、腕の見せ所なのです。 setScrollProperties の引数は3つです。  ・第1引数    1ページあたりの表示量。主にスライダの大きさに影響を与えます。  ・第2引数    スクロールバーが返す最小値。 0 未満にはできません。通常は 0 です。  ・第3引数    スクロールバーが返す最大値。縦のスクロールバーの場合は、スライダが下端にある時の値です。 今回は、スクロールバーから返される値を直接スクロール処理に反映できるように値を決めます。 スライダが上端にある時、スクロール対象はステージの上端( Y = 0 )にあればいいので、第2引数は 0 にします。 ちょっと頭を使うのが第3引数です。 この値は、スクロール対象と表示領域の大きさから決めます。 スライダが下端にある時は、スクロール対象の下端が、表示領域の大きさの分だけ表示されるということです。 スクロールバーから返される数値をもとにこの位置を割り出せるように、最大値を決めます。 文字だけでは分かりにくいかと思いますので、図に描いて考えてみてください。 スクロールバーが返す値を決めたら、あとは、スライダが動くたびにスライダの位置に応じた値を見て、それとは逆の方向にスクロール対象を移動させるだけです。 今回はムービー全体を縦スクロールということで、_root の _y 座標を書き換えます。 スライダが動いたかどうかは、UIScrollBar コンポーネント(を制御しているクラス)が持っている scroll というイベントを利用して検出します。 スクロールバーが返す値は、scrollPosition プロパティに入っています。 スライダが下端にあるかどうかは、scrollPosition の値が setScrollProperties の第3引数に設定した値に達しているかどうかで判断できます。 冒頭にも書きましたように、スクロールバーもボタンも _root の子であるために、_root ごと動かすとこの2つも同時に動いていってしまいます。 そこで、まず、_root を移動する前に _y の値を保存しておきます。 移動後の座標と保存しておいた座標の差だけスクロールバーとボタンがズレてしまったということですから、この2つをその移動量だけ改めて移動して位置を戻します。 最後に、ボタンはムービークリップシンボルの中の入れ子になっていますので、ターゲットパスにご注意ください。 ------------------------------------------------------------------- ・・・とまあ、力技ではありますけれど、一応、ムービー全体をスクロールバーで動かすことは可能です。 ですが、一般的には、スクロール対象をムービークリップとして作り、マスクを利用して一部分だけを表示しながら移動させる方法をとります。 スクロール対象のムービークリップだけが移動するのであれば、移動した分だけスクロールバーとボタンを戻すといった余計な手間をかける必要もなくなります。 Flash のムービークリップやステージは無限に大きくできるわけではありません。 また、静止テキストが多すぎると処理が重くなったり、字が重なって表示されることがあります。 スクロールバーでスクロールさせる対象の大きさはほどほどにしましょう。 長くなってすみませんでした。 不明な点がありましたら補足してください。

関連するQ&A

  • スクロールバーが一番したまで来たときにボタンが表示される。

    質問させてください。 createtextfieldでつくったテキストフィールドにコンポーネントを使って、スクロールバーを適用させています。 そのスクロールバーのスライダが一番下まで来たときに、ボタンを表示させたいのです。 しかし、その条件設定がどうしたらいいのかわからず、なやんでいます。 自作のスクロールボタンだと、ボタンを押したときにmaxscrollなら、という条件設定で実現できたのですが、コンポーネントの場合は、どういう風にすればいいのかわからず、困っています。 もしよろしかったら、教えていただければ、幸いです。 私が使っているのは、 WIN XP FLASH MX 2004 です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • TextAreaとScrollBarのコンポーネントについて

    ドキュメント内のボタンが始めは可動せず、そのドキュメント内にあるTextAreaが一番下まで来た時に初めてボタンが可動する仕組みを作りたいのですが、どなたか知恵をお貸しいただけないでしょうか? イメージ的にはネットの同意書を一番下までスクロールしたら「同意する」ボタンが可動するようなものです。 詳しく説明させていただきます。 僕が出来たところは,TextAreaにUIscrollBarを組み合わせて、HTMLでそのTextAreaの中身の文章は作りました。そしてUIscrollBarで中身がスクロールする仕組みが出来たのですが、それとTextArea外のボタンの組み合わせがわかりません。つまり、 「TextArea内の文章が一番下までスクロールしたらTextArea外のボタンが可動する」仕組みが知りたいです! どなたか僕に知恵を分けてください。 僕が使っているものは Macromedia Flash8

  • 画面スクロールができません。Browserなどでスクロールバーをマウス

    画面スクロールができません。Browserなどでスクロールバーをマウスやタッチパッドで移動しても、常に一番下に行ってしまいます。画面が閲覧できずPCとして機能しません。Browserばかりでなく上下スクロールする画面では、どの画面でも一番下に行ってしまい、ほとほと困っています。 何か修復方法があれば、ご教示下さい。よろしくお願いします。

  • Firefox スクロールバーが消え

    こんにちは。  Firefoxの3.0.10を使用して画面縮小時にスクロールバーがなくなる現象で困っています。    これは昨日気づいたらなっていました。  ブラウザ画面を縮小表示するとスクロールバーの縦(時折横も)が消えてしまいマウスでスクロールができずとても不便です。   さらに横のスクロールが出る時も画面の一部分までしかスクロールせず全体を読むことはできません(画面が縮小分の大きさでカットされている)。 ならばと、ノートパソコンのスクロールボタンをおしてスクロールしようとしても画面が縮小しているところまででやはり切れており表示されずみれません。 縦方向はスクロールボタンでスクロールします。 これらの現象は画面が最大化しているときはスクロールバー表示もされ問題はありません。  なお、使用状況はタブレットPCをXPで使っております。その際、画面を縦にし読もうとすると最大化画面でもスクロールバーの表記がされず、横画面なら出ます。 IE8で使えばはいずれの現象も出ておらず、FIREFOXだけの現象となっております。 自分で調べてみてアドオンのテーマも調べましたが使用中では問題ありませんでした。 Safetymodeでの立ち上げも行いましたが変化はありませんでした。   使用上の快適さでFirefoxを使っているので、今後も使いたいのですが、この現象のままでは実務上使えないため、どなたか解決方法をご教示くださるとうれしいです。  宜しくお願いいたします。

  • スクロールバーの位置について

    HTMLで縦スクロールバー付で表示させた場合、通常ですとスクロールバーは一番上(画面のTOP)を表示ですが、スクロールバーを一番下(画面の下)をデフォルトにする方法はありますか? ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • スクロールできない(画面右にスクロールバーがない)ウインドウの表示

    スクロールできない(画面右にスクロールバーがない)ウインドウの表示 画面の小さなPCで、上記のようなウインドウの全体を表示させることは可能でしょうか あるWebメールの設定画面なのですが、最下部にあるであろう設定を完了させる類のボタンが表示されず困っております ●ウインドウサイズは固定されているのか、上下・左右ともに縮小(拡大も)できません ●全画面表示でもウインドウ全体の表示には至りませんでした(まあこれは今回表示されたとしても根本的な解決にはなりませんが) 何かしらの設定で全体が見られるようにできませんでしょうか? ご教授お願いします  

  • マウスのスクロールボタンで画面上で下に動かない

    Alps pointing device driver version:7.0.402.3 PC: FMV-Biblo NF60T WindowsXP 数日前からマウスが画面上(ウィンドウ内)でスクロールボタンを使って下にスクロールできません。上には動きます。画面の一番右にある上下に動かせるバーをポイントして、下には動かせます。あと一旦その右横のバーで一番下に下げてからだと、マウスのスクロールボタンでもウインドウ内(画面上)で上に動きます。しかし又下に下げようとしてもマウスのスクロールボタンでは出来ません(右横のバーの位置がもし丁度真ん中なら、そこからトップまではウィンドウ内(画面上)でスクロールボタンで上に動く)。 どうしたら直せるか、可能性があれば教えていただけますか?

  • エクセル スクロールバー表示

    こんにちは。エクセルで質問なのですが、 エクセルを開き、表示を最大表示にすると スクロールバー(左右に画面を動かすバー)が 消えてしまいます。厳密にいうと タスクバーで隠れて見えない感じです。 画面表示を最小化すると下にあるスクロールバーは見えます。 画面を最大表示にした時にもスクロールバーが見えるようにしたいです。 ちなみに画面右にあるスクロールバー(上下のスクロールバー)は 画面最大表示、最小表示どちらでも隠れずに見えてます。 詳しいかた宜しくお願い致します

  • スクロールバーが消えてしまいました。

    画面右端のスクロールバー?(画面の下のほうへ移動できるもの)がなくなってしましまい、とても不便です。どうやったら表示できるのでしょうか?

  • ★質問★スクロールバーを使わずに、スクロールをする

    皆様、お世話になります。 質問です。 ※i frame での使用です スクロールバーを使わずに、スクロールをする 技ってありますか? フレーム内は、他のサイトのページが閲覧できるように なってますが、超縦長なのでスクロールバーが出ます。 単にスクロールバーを「消す処理」の設定すると、 フレーム内は見れなくなりますし。。。 付け足すと、スクロールバーを使わない代わりに、 何か変わりになるボタン?(GUI) を割り当てて、それをクリックする事で 上下させたいのですが。。 ※中身の内容を自動で上下させるのではありません ↑マーキー見たいなものではないです。 あくまで、オンマウス的な技。 FLASH以外でお願いします。 説明が下手で恐縮です。。。。orz 何卒宜しくお願いします。 助けてください。。。

    • ベストアンサー
    • HTML

専門家に質問してみよう