FLASHを触り始めたばかりですが、とても楽しく
不細工ながらも一生懸命いろんなのを作っています。
先日、趣味仲間とホームページの話になり、少しばかりFLASHを
触ってるばかりに友達のサイト作りを手伝う事になってしまいました。
簡単な、ボタン操作でキャラクターがピョコピョコ動く程度で良いという
話だったのでそれなら私も作れるかと思い手を貸す事になりました。
作業は順調に進み、すべての作業を終えたのですが
沢山面白機能を付けたばかりに少し重くなり、ホームページ閲覧時に
少し時間がかかります。
ローディング画面を作ってあげようと思ったのですが
その友達のコンセプトの都合上、どうしても下記のようなローディング画面を
作らなくてはいけなくなりました。
・・・・とても、難しく、もう1週間悩みやってますが成功しません。
誰かお助け下さい。
【やりたいこと】
○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい
○回線速度、ハイスペックマシンの方が見た場合、読み込みが速すぎて読み込みアニメが見れないので強制的に見せたい
どうか、お助け下さい。
宜しくお願い致します
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」の基準点の座標です。
混乱しないようにご注意ください。
なんともご丁寧かつ、判り易いご説明を有難うございます。
非常に意味が分かりスグに利用でき完成しました!
本当にありがとうございました。
助かりました!
No.4
- 回答日時:
ローディングバーはよく使われるものなので、ネットや本に作り方が書いてあります。
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の場合です。
ここは無償で質問に答える場所なので、おせっかい心が入ってしまうのは仕方ない面はありますね。
お返事ありがとうございます
(73.5 - 割合 * 118.3)←これです!
頭が悪いのでこの式を導き出すことができませんでした
本当に助かりました、有難う御座います!
ActionScript2.0を使用していると書くべきだったのですね
すみませんでした、私の持っているソフトが全てだと思っていました。
あと、おせっかいな心に対して特に依存はございません。
ただ、質問内容からかけ離れたお答を頂いても
お返事に困るだけなのと、他に私のような質問者様が
このツリーを見つけた時に残念な気持ちになられるのを考慮して
愚痴を言わせて頂きました。
ですが、最短時間で問題が解決し助かっております。
愚問ばかりの私ですがこれからも宜しくお願い致します
No.3
- 回答日時:
namunamu20さん、
余計なことかもしれませんが、ローディング画面は、回線速度が遅かった時代に、閲覧者にイライラさせないようにという配慮から作られた、苦肉の策でした。
本来は、ない方が良くて、早く、本画面に遷移し、本画面で、メッセージを伝えるべき代物ですので、ローディング画面を長く見せるというのは、閲覧者にとって、苦痛以外の何物でもないので、(最初は、これに凝る方々が結構いらっしゃるのですが、)少し、本末転倒かなと思います。
まぁ、色々な考えがあると思いますが、私は、こう思います。
No.2
- 回答日時:
3階層下とか書かれましても何のことか(どういう現状なのか)サッパリわかりません。
何でも良いですが考え方は同じで行けるはずです。
ご参考に↓
ローディングバーをゆっくりみせる方法
http://okwave.jp/qa/q4071675.html
お返事ありがとうございます。
大変参考になりました。
具体的案の回答をして下さる方が少ないので質問掲示板の
うまい質問方法に悩む次第です。
ローディング画面が無い方がいいとか
普通にムービー見せてるだけでは?とか、全く答えになってない
返信ばかり来て困惑します。
実際、私はローディング画面が必要な訳であり
BlurFiltanさんのような具体的対処法を求めている訳で
いちいち多方面からの意見をされても回答に困ります。
ちなみに3階層という表現はparent(_root)から3つ入り込んだMCの事を言いたかったのですが
上手く表現できなくてすみませんでした。
○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい
の質問に必要(?)かな?と思ってしまいました。
後は、この
○読込中、3階層下にあるMC座標(Y位置)73.5⇒-44.8まで移動したい
が解決できればいいのですが、なんとかなるでしょうか。
質問の仕方が悪いでしょうか。
まずは、ローディングバーをゆっくり見せる方法の対処法を
お教え下さり有難う御座いました。
大変助かりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
斜めに移動
-
外部テキストのタグ
-
最後のフレームでジャンプするU...
-
photoshopで書いた四角の枠の中...
-
スクロールバーの自作の仕方
-
SharedObjectの使い方(長文です)
-
MovableTypeの導入について
-
(AS3)「var mc:MovieClip = new...
-
フォームのテキストの入力数字...
-
ACCESS2003 VBAテキスト編集
-
外部テキストファイルでは文字...
-
PythonでSetWindowPosを使うに...
-
画像を一定時間ごとに切り替え...
-
外部テキストの文字化けが直ら...
-
マウス自体の移動量の取得
-
Actionscript3.0のクラス定義の...
-
XMLでJPEGスライドを作成_表示...
-
丸いものがボコボコ出てくるよ...
-
レーダーチャートの描画
-
ラッコって?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 ゲーム
-
Flashパブリッシュエラー
-
外部swfを読み込んだときのずれ
-
文字(テキスト)の潰れ・にじ...
-
MCをブラウン運動させたい。
-
flash lite の質問です。flash ...
-
photoshopで書いた四角の枠の中...
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
テキストボックスにセルの値を...
-
static関数がmapファイルに載ら...
-
VB6.0 でメニューを作りたいん...
-
【VB.NET】別Formのボタンが押...
-
テキストエリア内の文字列にリ...
-
UWSCのBTN関数について。
おすすめ情報