CDの保有枚数を教えてください

FLASHを触り始めたばかりですが、とても楽しく
不細工ながらも一生懸命いろんなのを作っています。
先日、趣味仲間とホームページの話になり、少しばかりFLASHを
触ってるばかりに友達のサイト作りを手伝う事になってしまいました。

簡単な、ボタン操作でキャラクターがピョコピョコ動く程度で良いという
話だったのでそれなら私も作れるかと思い手を貸す事になりました。

作業は順調に進み、すべての作業を終えたのですが
沢山面白機能を付けたばかりに少し重くなり、ホームページ閲覧時に
少し時間がかかります。
ローディング画面を作ってあげようと思ったのですが
その友達のコンセプトの都合上、どうしても下記のようなローディング画面を
作らなくてはいけなくなりました。

・・・・とても、難しく、もう1週間悩みやってますが成功しません。
誰かお助け下さい。

【やりたいこと】
○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい
○回線速度、ハイスペックマシンの方が見た場合、読み込みが速すぎて読み込みアニメが見れないので強制的に見せたい

どうか、お助け下さい。
宜しくお願い致します

A 回答 (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」の基準点の座標です。
混乱しないようにご注意ください。
「ローディング画面の作り方(欲張りです)」の回答画像5
    • good
    • 0
この回答へのお礼

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

本当にありがとうございました。
助かりました!

お礼日時:2010/01/19 15:55

ローディングバーはよく使われるものなので、ネットや本に作り方が書いてあります。



http://hakuhin.hp.infoseek.co.jp/main/as/load.ht …

読み込みバイト数から割合(%)を求められるので、それをY座標に変換すればよいです。
この場合だとおそらく、(73.5 - 割合 * 118.3)でしょうか。

3階層下というのは意味はわかりますよ。
_root.hoge_mc.hoge_mc.hoge_mc._y ということですよね。ActionScript2.0の場合です。

ここは無償で質問に答える場所なので、おせっかい心が入ってしまうのは仕方ない面はありますね。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます

(73.5 - 割合 * 118.3)←これです!
頭が悪いのでこの式を導き出すことができませんでした

本当に助かりました、有難う御座います!

ActionScript2.0を使用していると書くべきだったのですね
すみませんでした、私の持っているソフトが全てだと思っていました。

あと、おせっかいな心に対して特に依存はございません。
ただ、質問内容からかけ離れたお答を頂いても
お返事に困るだけなのと、他に私のような質問者様が
このツリーを見つけた時に残念な気持ちになられるのを考慮して
愚痴を言わせて頂きました。

ですが、最短時間で問題が解決し助かっております。
愚問ばかりの私ですがこれからも宜しくお願い致します

お礼日時:2010/01/15 12:34

namunamu20さん、


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

3階層下とか書かれましても何のことか(どういう現状なのか)サッパリわかりません。



何でも良いですが考え方は同じで行けるはずです。
ご参考に↓

ローディングバーをゆっくりみせる方法
http://okwave.jp/qa/q4071675.html
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
大変参考になりました。

具体的案の回答をして下さる方が少ないので質問掲示板の
うまい質問方法に悩む次第です。

ローディング画面が無い方がいいとか
普通にムービー見せてるだけでは?とか、全く答えになってない
返信ばかり来て困惑します。

実際、私はローディング画面が必要な訳であり
BlurFiltanさんのような具体的対処法を求めている訳で
いちいち多方面からの意見をされても回答に困ります。

ちなみに3階層という表現はparent(_root)から3つ入り込んだMCの事を言いたかったのですが
上手く表現できなくてすみませんでした。
○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい
の質問に必要(?)かな?と思ってしまいました。

後は、この
○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい
が解決できればいいのですが、なんとかなるでしょうか。
質問の仕方が悪いでしょうか。

まずは、ローディングバーをゆっくり見せる方法の対処法を
お教え下さり有難う御座いました。
大変助かりました。ありがとうございます。

お礼日時:2010/01/15 09:13

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

    • good
    • 0

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