スクロールバーを非表示にする方法 | ActionScriptの繰り返し文を使用

このQ&Aのポイント
  • ActionScriptを使用して複数のページでスクロールバーを非表示にする方法について質問させていただきます。
  • テキストの長さを判別し、スクロールが不要な場合にスクロールバーを非表示にするために、繰り返し文を利用しようとしていますがうまくいきません。
  • ActionScriptのコードによるスクロールバーの非表示化について詳細な質問内容を記載しております。
回答を見る
  • ベストアンサー

スクロールバーの非表示+繰り返し

現在、FLASHで作品を作成していて、ActionScriptを勉強中なのですが、あるところで詰まってしまい質問させていただくことになりました。 その詰まっているところとは、『繰り返し文を用いて、スクロールバーを非表示にする』ということです。 同じようなページを多数作成していて、その中でテキストを表示させる画面があるのですが、そのテキストの長さがまちまちなので、テキストの長さを判別してスクロールの必要がなければ、スクロールバーを非表示にする。ということです。 そしてデータが多量ゆえ効率化しようとおもい、繰り返し文を用いて効率化しようとしたのですが、なかなかうまくいかず困っています。 現状のスクリプトでは、1ページ目はきちんとスクロールバーの表示・非表示がされるのですが、2ページ目以降に遷移すると非表示になるはずのスクロールバーが真っ白の状態で表示されてしまっているのです。 ちなみに使用しているスクロールバーは、コーポネントの中にある「UIScrollbar」です。 なお、ActionScriptは以下のようになっております。 //sub_bar=スクロールバー(sub2_barも同義) //sub=テキスト(sub2も同義) for (i=1; i<=10; i++) { //スクロールの必要がないならスクロールバーを非表示 this["sub_bar"+i]._visible = (this["sub"+i].maxscroll<=1) ? false : true; this["sub2_bar"+i]._visible = (this["sub2"+i].maxscroll<=1) ? false : true; } テキストのインスタンス名は"sub1,sub2,sub3…"といったように、 スクロールバーのインスタンス名は"sub_bar1,sub_bar2,sub_bar3…"といったようになっております。 質問でよくわからない点、足りない点があれば、補足いたしますのでおっしゃってください。 よろしくお願いします。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

Flash ではそもそも「ページ」というものは存在しないので (出てくるとすればFlash を印刷する場合の印刷物のページ), ページと書かれましても何のことかわかりませんが, 例えば, メインムービーの フレーム1 に複数のテキストフィールドがあって, メインムービーの フレーム2 に,フレーム1とは別のテキストフィールドがあるという意味でしょうか? よくわかりませんが, 上記のように,フレームのことだとすると, sub_bar1 ~ sub_bar10 が存在するフレームには次のように, for (i=1; i<=10; i++) { //スクロールの必要がないならスクロールバーを非表示 this["sub_bar"+i]._visible = (this["sub"+i].maxscroll<=1) ? false : true; } sub2_bar1 ~ sub2_bar10 が存在するフレームには次のように, for (i=1; i<=10; i++) { //スクロールの必要がないならスクロールバーを非表示 this["sub2_bar"+i]._visible = (this["sub2"+i].maxscroll<=1) ? false : true; } 分けて書かなければなりません。 実際のムービーの構造がよくわかりませんが,とにかく, 指示したいオブジェクトが,ちゃんとステージに存在する状態で指示してください。 ===================== Flash は,基本的に時間軸にそってアニメーションするコンテンツです。 フレーム1 で操作できるのは, フレーム1 に存在するオブジェクトのみです。 普通は次のように複数フレームにわたってオブジェクトが存在します。                   5   10  □ レイヤー 筆・・|○  []|●/////[]|○  []| 仮に, 上のように フレーム5 ~ フレーム10 まで存在するものがあるとすれば, フレーム1 に その物に対するプロパティを書くことはできません。 実際には書けますが,書いても無効です。 フレーム5 で出没するムービークリップのアルファ(不透明度)を, フレーム5 で半透明(アルファ50)にしようと思えば, フレーム5 に  ムービークリップのインスタンス名._aipha = 50; と書けば フレーム5 以降はアルファ50のまま時間は流れます。 そうではなく,フレーム8 に  ムービークリップのインスタンス名._aipha = 50; と書けば フレーム5 で出没するムービークリップにはアルファはかかっていませんが, フレーム8 でアルファがかかり, フレーム8 以降アルファ50になりそのまま時間は流れます。 とにかく,そのとき(スクリプトを実行する時点で), ステージ上などに存在するインスタンスにしか命令や数値代入はできません。

関連するQ&A

  • 文字を一文字づつ表示し、スクロールバーがしたまできたら、文字を表示する。

    質問させて下さい。 //トレーニングボタンを押したとき train.onRelease = function() { mydata_len = _level0.entry.length; i = 0; typeID = setInterval(function () { if (i<mydata_len) { i++; _root.my_txt.scroll++; my_txt.text = _level0.entry.substr(0, i); my_txt.setTextFormat( format ); } else { clearInterval(typeID); } }, 1); //テキストフィールドのscrollプロパティを監視 my_txt.onScroller = function() { if( this.scroll == this.maxscroll ) { _root.training._visible = false; _root.trainingend._visible =true; } else { _root.training._visible = true; _root.trainingend._visible =false; } } } テキストフィールドにタイプライター風に文字を一文字づつ表示させ、表示させている間は、表示中のダイナミックテキストをテキストフィールドの下に表示し、スクロールバーが一番したまできたら、表示終了のテキストに切り替わる、という事をしたいのですが、 文字を一文字づつ表示させている間も表示終了の文字が出てきてしまうのです。 文字を一文字づつ表示している間、スクロールバーが一番下にきたら、表示終了。それ以外は表示中、としたいのです。 文字を一文字づつ表示している間。という制約がなければできるのですが、文字の表示中だとうまくいきません。 もしよろしければ、お教えいただきたく思います。 私がつかっているのは、 WIN XP FLASH MX 2004 です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • FlashMXのスクロールバーに関して

    こんにちわ、 win2000でFlashMXを使用し作業をしています。 外部ファイルを読み込み、テキスト表示をする際、UIコンポーネントのスクロールバーを使用しました。 しかし、テキストボックスの大きさまでは表示されるのですが、全ての文書を見ることが出来ません。 文章をスクロールさせたいのですが、どうすれば出来るのでしょうか? ちなみにアクションスクリプトは System.useCodepage = true; this.loadVariables("test.txt");{ _root.newtxt.condenseWhite = true; } で外部ファイル"test.txt"を読み込んでます。 そのほかはスクリプトを組んでません。 UIコンポーネントのスクロールのプロパティでは、 ●Target TextField → newtext(テキストボックスのインスタンス名) ●Horizontal → false になってます。 レイヤーは ・テキストボックス ・スクロールバー 一つ一つ分かれています。 もしわかるかたがいらっしゃれば教えていただければと思います。 また説明として不十分であればおっしゃってください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ループの後にTrueになる不思議

    下記のコードを実行してみます。 Private Sub Command1_Click() ProgressBar1.Visible = True Label1.Visible = True ProgressBar1.Max = Val(Text1.Text) For i = 1 To Val(Text1.Text) Text1.Text = i ProgressBar1.Value = i Next i MsgBox "終了しました。" ProgressBar1.Visible = False Label1.Visible = False End Sub 「ProgressBar1」はループに入る前に「Visible = True」になります。 「Label1」はループ終了後に「Visible = True」になります。 「Text1.Text = i」はループ終了後に表示されます。 本来は、「Label1」はループに入る前に「Visible = True」にして、「Text1.Text = i」をループ中に表示させたいのですが、できません。 どこかコードが間違っているのでしょうか。

  • スクロールバーの表示について

    お世話になります。 フォームやフレームにスクロールバーを表示させたいのですがScrollBarsプロパティやKeepScrollBarsVisibleプロパティに値を設定してもレールの部分だけ表示されてバーが表示されません。 というのもフォームやフレームの中にたくさんコントロールを置きたいのですがフォームやフレームの中に納まらないためスクロールバーでスクロールして納まらない部分も表示できるようにしたいと思っています。 フォームやフレームの中をスクロールするにはどうすればよいのでしょうか(テキストボックスではバーが表示されスクロールできます)。 よろしくお願い致します。

  • スクロールバーを表示させないようにするには・・・

    例えば、フレーム分割していないページの スクロールバーを表示させないようにする方法はありますか? ちなみに、ページの縦が1画面内で収まっているので、 スクロールはしませんが。

    • ベストアンサー
    • HTML
  • スクロールバーが表示されない・・・

    最近初めてHPビルダー8でサイトを作成しています。 なんとか順調に行ってネット上に公開までいったのですが、トップページでフレームと言うのでしょうか?? 左のフレーム側の方はスクロールバーが表示されるのですが、右側のページの方はスクロールバーが表示されないのです。 ビルダーのプレビューで見る時にはあるのですか、ネット上で見るとなくなってるのです。 ビルダーにあるフレーム属性の変更のスクロールバーの所を「あり」にしたり、ページの下の方に文字を置いたりしたのですが、ネット上で見るとどうしてもスクロールバーが出てくれません。 あと、パソコンはWindousを使っています。 説明不足かもしれないのですが…あまりパソコンに詳しくないのでどうぞ宜しくお願い致します!!

  • ホームページ製作でスクロールバー表示しなくてもスクロールするには

    スクロールバーは表示したくないけど、ページをスクロールしたいとき、どうすればいいのでしょうか・・

  • ActionScript3でスクロールバーを作成

    ActionScript3でスクロールバーを作成 したいのですが、一つの問題がわかりません。それはこのページのように↓ http://www.shin-go.net/motionlab/?p=121 スクロールバーを動かすことでコンテンツもスクロールでき、スクロールバーのドラッグを止めた時コンテンツが減速して止まるというようなものを作りたいのです。 そのわからない問題がドラッグを止めた時コンテンツをどうやって減速させて止めているのか?です。そのページではサンプルがDLできるのでソースは見れるのですが、ソースを見てもどこの部分でドラッグを止めたらコンテンツを減速して止めるという命令をしているのかがよくわかりません。ドラッグを止めるstopDrag()のときにどんな命令をすればできるのでしょうか? 制作環境:Flash CS4、ActionScript3

    • ベストアンサー
    • Flash
  • スクロールバーが消えた

    IEを使用しています。スクロールバーが表示されず、スクロールができません。もちろん、↓でもスクロールができません。インターネットのページの下のほうが見えないのですが、どうしたらいいでしょうか。以前はスクロールもでき、インターネットのページも見えていました。

  • html、スクロールバーを表示させない(横だけ)

    HTMLでフレームのスクロールバーを表示させないには <frame>、<iframe>タグの属性、scrolling="no"とすればよいのですが それでは縦のスクロールバーも横のスクロールバーも消えてしまいます。 自分は横のスクロールバーのみ消して縦のスクロールバーのみ残したいのですがどうすればいいでしょう? 補足:上下にのみ動かせるページを作りたい。ということ。 わかるかたどうかお願いいたします。 HTMLでムリでしたらJavaScritpなどでもかまいません(が、解説、もしくは解説ページを教えていただかないと自分はJavaScriptが打てませんので・・・よろしくお願い致します。)

専門家に質問してみよう