【先着1,000名様!】1,000円分をプレゼント!

現在、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…"といったようになっております。

質問でよくわからない点、足りない点があれば、補足いたしますのでおっしゃってください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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になりそのまま時間は流れます。


とにかく,そのとき(スクリプトを実行する時点で),
ステージ上などに存在するインスタンスにしか命令や数値代入はできません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング