行き詰まってしまいました。
わかる方居られましたら、アドバイスいただけないでしょうか。
例えば、以下のような構成になっていると仮定します。
load.swfという読み込み元のファイルがあって、ボタンが3つ。
それに「loadarea」と名前をつけたMCを、外部swfの読み込み用エリアとして配置しました。
同じ階層(フォルダ内)に
・sample1.swf
・sample2.swf
・sample3.swf
上記のように構成されているとします。
load.swf内の「ボタン1」を押すと、外部swfファイルのsample1.swfが読み込まれるというスクリプト(以下)をボタン1に記述しました。
on(release){
loadMovie("sample1.swf", _root.load_area);
}
ここからが問題なのですが、
上記のように、外部swfファイルが読み込まれたら何々する(例えば、sample1が読み込まれたら、load.swf内のボタン1のアルファ値を変更する)というようなスクリプトを組みたいんですが、上手くいきません。
if文で記述することは可能なんでしょうか?
No.1ベストアンサー
- 回答日時:
まず、読み込まれる sample○○.swf ファイルの方ですが。
Flash は全フレームが読み込まれなくても、読み込みの済んだフレームから順次再生されていく設計になっています。
また、メインのタイムラインが止まっていてもムービークリップのタイムラインは動きますし、フレーム1にサウンドが入っている場合はフレーム1が再生された時に音が鳴ってしまいます。
loadMovie で読み込む場合も同じですから、load.swf ファイルの方で完全に読み込まれるまで停止させておきたい場合は、この特性を何とかしなければなりません。
一番簡単な対策は、sample○○.swf の最初のフレームを空白のキーフレームにして、stop(); でタイムラインを止めておくことです。
ある程度容量のあるファイルでしたら、sample○○.swf に普通のムービー同様に Now Loading 画面を作っておくのも1つの方法です。
ただし、_root の getBytes*** メソッドを使うと load.swf に読み込まれた時に load.swf の容量を取得してしまいますので、this.getBytes*** というように相対的に書くか、Flash MX 2004 以降をお使いの場合は _lockroot で _root の指す対象を保護してください。
-----------------------------------------------------------------
読み込み完了を待つ方法は読み込み方によって様々なやり方がありますが、loadMovie を使うなら、ムービークリップの data イベントを使う方法が簡単で無難です。
data イベントは loadMovie か loadVariables で外部からの読み込みを実行した時に発生します。
読み込み完了後にボタンを薄く表示するには、どのボタンがクリックされたのかはムービークリップ load_area 側では分かりませんから、これは変数に記録を取っておきます。
あとは data イベントの中で getBytes*** メソッドを使って読み込み進捗状況を監視し、100 %に達するまで待ってボタンのアルファを操作するだけです。
load.swf には、ステージにムービークリップ load_area と読み込みを開始するためのボタンインスタンス btn1 ~ btn3 があるとします。
外部ファイルの読み込み終了後にクリックされたボタンを薄く表示するスクリプトは、大体、次のようになります。
このスクリプトはフレームと、各ボタンおよびムービークリップ load_area のインスタンスに設定してください。
(↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)
●フレームに設定するスクリプト
//クリックされたボタンの参照を保持
clicked_btn = null;
●各ボタンに設定するスクリプト
( btn1 の例です。他のボタンでは番号を変更してください)
on(release)
{
//クリックされたボタンの参照を保存
_root.clicked_btn = _root.btn1;
//外部ファイルを読み込む
loadMovie( "sample1.swf" , _root.load_area );
}
●ムービークリップ load_area に設定するスクリプト
onClipEvent(data)
{
//読み込み完了率を算出
loaded = this.getBytesLoaded();
total = this.getBytesTotal();
per = Math.floor( loaded / total * 100 );
//読み込み完了後の処理
if( per >= 100 )
{
//外部ファイルのタイムラインを動かす
this.play();
//クリックされたボタンを薄く表示する
_root.clicked_btn._alpha = 30;
}
}
loadMovie で読み込んだ時は、data イベントは読み込みが完了するまで数回にわたって発生します。
何回発生するかは環境によって異なります。
1回もしくは2回くらいしか発生しないこともありますので、load.swf ファイル側で sample○○.swf のプログレスバーを表示したい場合は data イベントは不向きです。
(イベントが常時発生しないために、バーがリアルタイムに伸びていく様子が見えません)
しかし、読み込みの完了を待ちたいだけなら data イベントでも対応できます。
プログレスバーを load.swf 側で用意する方法もあるにはあるのですが、sample○○.swf 側に付けておくのが一番簡単だと思います。
ただし、この場合は先述の通り、外部 swf ファイルでは _root の指す対象が変わる点にご注意ください。
Flash MX 2004 か Flash 8 をお使いでしたら、loadMovie を強化した MovieClipLoader というクラスもあります。
MovieClipLoader では読み込みの各段階で様々なイベントが発生し、状況を細かく把握できます。
読み込みの完了を待って何かをするには、onLoadInit というイベントを利用します。
MovieClipLoader はこのサイトでもたびたび話題になっています。
興味がありましたら調べてみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
potplayerについて質問です
-
フラッシュゲームアーカイブ2
-
スマホでサイトの画像を長押し→...
-
Adobe Flash Player とは?
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
potplayerについて質問です
-
スマホでサイトの画像を長押し→...
-
uwscでExcelに自動記入
-
アメブロで音声ファイルを貼る方法
-
flash (.swf) を編集したい
-
ダウンロードしたデジブックはa...
-
ウディタで作ったゲームを公開...
-
ゲオでカードを作るのは何歳か...
-
フラッシュゲームアーカイブ2
-
FLASHでゲームを作っていた人は...
-
VBAのコンボボックスの年月表示...
-
ムービークリップをボタン操作...
-
Flash Playerのサポートが終了
-
ActionScript 3.0についての質...
-
Form内のselectを連動させるに...
-
Flash playerを有効にするには
-
n88互換BASIC for Windows95に...
-
レジリエンス 変換キーが作動し...
-
アニメの「.fmd」をgif形式に変...
-
laptop go2からの買い替え、lap...
おすすめ情報