• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ローディング画面の作り方(欲張りです))

FLASHを使った欲張りなホームページ作成とローディング画面

このQ&Aのポイント
  • FLASHを触り始めたばかりの私が、友達のホームページ作成を手伝うことになりました。作業は順調に進んだものの、沢山の面白機能を追加したせいでホームページの読み込みが重くなってしまいました。
  • この問題を解決するために、私はローディング画面を作成しようと試みていますが、友達のコンセプトに合わせた特殊なローディング画面を作ることが難しくて困っています。
  • 具体的には、読み込み中にMCの座標を移動させたり、回線速度やマシンのスペックに関係なく読み込みアニメーションを必ず表示するようにしたいと考えています。どなたか私を助けてください。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.5

ANo.2です。 3階層下の意味はわかりますよ。 ただそれらにどういうインスタンス名が付けてあって "どのこにスクリプトを書きたいか" などがわからないのです。 (動くMC自体に書く/動くMC内フレームに書く/クラスを作る/ などなど…) ActionScript のバージョンは ANo.4 の お礼 に書かれていいらっしゃる > ActionScript2.0を使用していると書くべきだった… でなんとか判明しました。 それと ANo.2 で書いた 『「A君(速さ不明)」と「B君(速さ一定)」を競走させる喩え話』 は理解されましたか? どのバージョンであっても同じ考え方で行けると思うのですが。 ~~本題~~~ _root に 「mc1」 というインスタンス名のムービークリップ(MC)があって その中に 「mc2」 があって,さらにその中に 「mc3」 というMCがあるとします。 その場合 _root のフレーム1に書くスクリプト例です。 (勝手に _root のフレームに書くと決めます。) -------------------------- // とりあえず この階層(_root) の再生を停止 this.stop(); // スタート y座標 を設定(※変更可) var sta:Number = 73.5; // ゴール y座標 を設定(※変更可) var gol:Number = 44.8; // sta と gol を大小比較し ± を出す var p_m = (gol-sta>=0) ? 1 : -1; // ロード1%で動く距離を算出 var mov:Number = Math.abs(gol-sta)/100; // 「B君(速さ一定)」の速さを設定(※1.5は変更可) var spdB:Number = mov*1.5; // 「mc3」 y座標を sta にしておく mc1.mc2.mc3._y = sta; // カウント用変数 cnt の初期化 var cnt:Number = 0; // 1フレーム進む時間ごとに毎回実行する関数を定義 this.onEnterFrame = function():Void { // // この階層(_root) のロードパーセントを算出 var per:Number = this.getBytesLoaded()/this.getBytesTotal()*100; // // 「A君(速さ不明)」の動く距離を算出 var MrA:Number = p_m*mov*per; // // カウント用変数 cnt に 1 を加算 cnt++; // // 「B君(速さ一定)」の動く距離を算出 var MrB:Number = p_m*spdB*cnt; // // mc3のy座標をA君との動く距離を比べた小さい方の値にする mc1.mc2.mc3._y = p_m*(Math.min(Math.abs(MrA), Math.abs(MrB)))+sta; // // もし 100%以上ロードが完了し なおかつ // B君の移動距離が ゴール-スタート 以上になったとき if (per>=100 && Math.abs(MrB)>=Math.abs(gol-sta)) { // この階層を再生 this.play(); // 1フレーム進む時間ごとに毎回実行する関数を削除 delete this.onEnterFrame; } }; -------------------------- [制御]→[ムービープレビュー] で出るパネルの [表示]→[ダウンロードのシミュレート] で動作検証できます。 スタートとゴール座標の値の大小が入れ替わっても良いように, (下から上へ移動しても上から下へ移動しても良いように,) 少々スクリプトが複雑になりました。 あと,Flashのインスタンスの座標は, そのインスタンスがある階層の基準点からのローカル座標ですからね。 「mc3」の座標とは「mc2」の基準点を0とした「mc3」の基準点の座標です。 混乱しないようにご注意ください。

namunamu20
質問者

お礼

なんともご丁寧かつ、判り易いご説明を有難うございます。 非常に意味が分かりスグに利用でき完成しました! 本当にありがとうございました。 助かりました!

その他の回答 (4)

  • bbcd
  • ベストアンサー率38% (29/75)
回答No.4

ローディングバーはよく使われるものなので、ネットや本に作り方が書いてあります。 http://hakuhin.hp.infoseek.co.jp/main/as/load.html#LOAD_01 読み込みバイト数から割合(%)を求められるので、それをY座標に変換すればよいです。 この場合だとおそらく、(73.5 - 割合 * 118.3)でしょうか。 3階層下というのは意味はわかりますよ。 _root.hoge_mc.hoge_mc.hoge_mc._y ということですよね。ActionScript2.0の場合です。 ここは無償で質問に答える場所なので、おせっかい心が入ってしまうのは仕方ない面はありますね。

namunamu20
質問者

お礼

お返事ありがとうございます (73.5 - 割合 * 118.3)←これです! 頭が悪いのでこの式を導き出すことができませんでした 本当に助かりました、有難う御座います! ActionScript2.0を使用していると書くべきだったのですね すみませんでした、私の持っているソフトが全てだと思っていました。 あと、おせっかいな心に対して特に依存はございません。 ただ、質問内容からかけ離れたお答を頂いても お返事に困るだけなのと、他に私のような質問者様が このツリーを見つけた時に残念な気持ちになられるのを考慮して 愚痴を言わせて頂きました。 ですが、最短時間で問題が解決し助かっております。 愚問ばかりの私ですがこれからも宜しくお願い致します

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.3

namunamu20さん、 余計なことかもしれませんが、ローディング画面は、回線速度が遅かった時代に、閲覧者にイライラさせないようにという配慮から作られた、苦肉の策でした。 本来は、ない方が良くて、早く、本画面に遷移し、本画面で、メッセージを伝えるべき代物ですので、ローディング画面を長く見せるというのは、閲覧者にとって、苦痛以外の何物でもないので、(最初は、これに凝る方々が結構いらっしゃるのですが、)少し、本末転倒かなと思います。 まぁ、色々な考えがあると思いますが、私は、こう思います。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

3階層下とか書かれましても何のことか(どういう現状なのか)サッパリわかりません。 何でも良いですが考え方は同じで行けるはずです。 ご参考に↓ ローディングバーをゆっくりみせる方法 http://okwave.jp/qa/q4071675.html

namunamu20
質問者

お礼

お返事ありがとうございます。 大変参考になりました。 具体的案の回答をして下さる方が少ないので質問掲示板の うまい質問方法に悩む次第です。 ローディング画面が無い方がいいとか 普通にムービー見せてるだけでは?とか、全く答えになってない 返信ばかり来て困惑します。 実際、私はローディング画面が必要な訳であり BlurFiltanさんのような具体的対処法を求めている訳で いちいち多方面からの意見をされても回答に困ります。 ちなみに3階層という表現はparent(_root)から3つ入り込んだMCの事を言いたかったのですが 上手く表現できなくてすみませんでした。 ○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい の質問に必要(?)かな?と思ってしまいました。 後は、この ○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい が解決できればいいのですが、なんとかなるでしょうか。 質問の仕方が悪いでしょうか。 まずは、ローディングバーをゆっくり見せる方法の対処法を お教え下さり有難う御座いました。 大変助かりました。ありがとうございます。

回答No.1

強制的に見せたいのであれば、それは本来のローディング画面ではなくなって、普通のフレームの動作になるのでは?