- ベストアンサー
ローディングバーをゆっくりみせる方法
以前こちらでも同様の質問がありましたが、 結末がよくわからないままでして、この結果が 知りたくなり質問しました。 http://oshiete1.goo.ne.jp/qa3600615.html ムービークリップのローディングバー(読み込みデータ)が100% になったら_rootをplayという流れだと思うのですが、 ゆっくりみせる方法がわかりません。 ご存知のかたよろしくおねがいします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Flash や ActionScript とは関係なく, 日常生活でするようなことを考えれば良いだけだと思いますよ。 体調によって走る速さがコロコロ変わる A君 と, いつも一定速度で走る B君 がいたとします。 その A君 と B君 を競争させて 遅い方の走る距離を記録としていけば, やたら突っ走る記録にはなりません。 また,遅い方がゴールするということは, 2人ともゴールしているということになります。 A君 と B君 でどっちが速いかを比べるメソッドなど知らなくても if文 で比較して分岐すれば良いのです。 (下の例では if文 ではなく,Math.min で遅い方の数値を取りだしていますが。) ステージ上に _root の フレーム1 だけに存在する横長の塗りの長方形を描いて (長さや高さは適当), その塗りをムービークリップに変換して (変換するとき基準点は左にしておく), そのムービークリップに次のように書けば突っ走らないローディングバーができます。 ------------------------------------------- // このムービークリップが表示されたとき onClipEvent (load) { // 親(_root) を停止 _parent.stop(); // このムービークリップの_xscaleを0にしておく this._xscale = 0; // 変数 cnt の初期化 (←一定速度で走る B君) cnt = 0; } // 毎フレーム進む時間ごとに実行 onClipEvent (enterFrame) { // // 変数 total に 親(_root) の総バイト数を代入 total = _parent.getBytesTotal(); // 変数 loaded に 親(_root) のロード済みバイト数を代入 loaded = _parent.getBytesLoaded(); // ロードパーセントを算出 (←走る速さが変わる A君) percent = Math.floor(loaded/total*100); // // 一方 変数 cnt に 5 ずつ加算 (←一定速度で走る B君) cnt += 5; // // _xscale を cnt と percent を比べた小さい方の値にする this._xscale = Math.min(cnt, percent); // // もし this._xscale が 100 以上になれば if (this._xscale>=100) { // 親(_root) を再生 _parent.play(); } } -------------------------------------------
お礼
丁寧にありがとうございます。例えまでつけていただいて^^ わかりやすかったです。 Math.min(cnt, percent); をつかうところが、ポイントなんですねぇ たいへん参考になりました!ありがとうございます。