プロが教えるわが家の防犯対策術!

こんにちは。
 FLASH8 に .AVI形式のビデオデータを
「WEBサーバーからのプログレッシブダウンロード」
にてステージ上に読み込んでいます。
それを ムービーの書き出しで .SWFファイルを作っています。
この .swf と .flv ファイルをサーバー上において .swf ファイルを指定い
ただくことで動画配信しています。

以前のこちらの質問QNo.2598084で この形式には getBytes とかの判定ができな
いこと知りました。その方の質問は FLVファイルを再生されたかったようで
すが、私は Nowloading をつけたいのです。読み込み%表示までのことは考えて
いません(教えていただいてもまだ理解できないと思います)。

NOWLOADINGと表示するレイヤーとは別にACTIONスクリプト用の
レイヤーもあるとして、何番目のフレームに どのようなアクションスクリプト
を書けばよいのでしょうか?

本も買いましたが、どれもビデオデータを SWFファイルに埋め込む場合の方
法でした。QNo.2598084の内容については2割程度しか理解できていませんので「
書いてあった」とお叱りをいただくかもしれません。
平易にご教示願えませんでしょうか?

よろしくお願いします。

A 回答 (1件)

質問QNo.2598084 で回答されていらっしゃる方の考え方をそのまま利用して,


それを簡略化し,
Nowloading という文字を表示させるだけの方法を書きます。

新規ドキュメントを作成して,
ご質問で書かれていらっしゃるように,
「WEBサーバーからのプログレッシブダウンロード」
にてステージ上に読み込ませる状態までを作成します。

すると,
ステージ上には「FLVPlayback」コンポーネントが自動的に配置されると思います。


そのステージ上の「FLVPlayback」コンポーネントを選択した状態で,
下のプロパティインスペクタ(プロパティパネル)の左の方にある,
[ <インスタンス名> ]
とグレーの文字が書かれてある部分でインスタンス名を付けます。
QNo.2598084 の回答にしたがって,
「mediacomponent」 というインスタンス名を付けることにします。


この時点でレイヤーはまだ1つのはずです。
新規レイヤーを追加して,
その新規レイヤー(レイヤー2)のステージ上にテキストツールで
Nowloading
という文字列を書きます。

その Nowloading というテキストを選択して,
「修正」→「シンボルに変換」 でムービークリップに変換します。

そのステージ上の Nowloading テキスト入りムービークリップを選択した状態で,
下のプロパティインスペクタ(プロパティパネル)の左の方にある,
[ <インスタンス名> ]
とグレーの文字が書かれてある部分でインスタンス名を付けます。
「Nowloading_mc」 というインスタンス名を付けることにします。


この時点でレイヤーは2つのはずです。
新規レイヤーを追加して,
その新規レイヤー(レイヤー3)のフレーム1の空白キーフレームを選択した状態で,
アクションパネルに次のスクリプトを書きます(コピペします)。

-------------------------------------------
/*--- QNo.2598084 の方のスクリプトを一部改良 ---*/
//コンポーネントを非表示にしてミュート(消音)にする
mediacomponent._visible = false;
mediacomponent.volume = 0;

_root.onEnterFrame = function() {
flv_total = mediacomponent.bytesTotal;
if (flv_total != undefined) {
//読み込み完了率を算出
flv_loaded = mediacomponent.bytesLoaded;
//100%読み込まれたら動画を再生
if (flv_per>=100) {
// Nowloading_mc を削除
Nowloading_mc.swapDepths(_root.getNextHighestDepth());
Nowloading_mc.removeMovieClip();
//コンポーネントを表示してミュートを解除
mediacomponent._visible = true;
mediacomponent.volume = 100;
//再生ヘッドを先頭に戻して再生
mediacomponent.playheadTime = 0;
mediacomponent.play();
//enterFrameイベント処理を削除
delete _root.onEnterFrame;
}
}
};
-------------------------------------------

念のためレイヤーの構造を描いておきます。

 □ レイヤー3 ・・・■|○| ←上記ActionScript
 □ レイヤー2 ・・・■|●| ←Nowloading_mc
 □ レイヤー1 ・・・■|●| ←mediacomponent

根幹の作成方法は以上,これだけです。



========================

> 何番目のフレームに どのようなアクションスクリプト
> を書けばよいのでしょうか?

上の場合は,FLVのロードに関してだけについて書いたものですから,
フレーム1 にActionScriptを書くことになります。
上のレイヤーの図の通りです。


FLVに関する Nowloading だけではなくて,
本体SWFにも Nowloading を付ける場合は,
フレーム1 などに SWF の Nowloading を用意して,
それ以降のフレームに上のものを用意すれば良いということになります。

 □ レイヤー3 ・・・■|○|○| ←ActionScript
 □ レイヤー2 ・・・■|●|●| ←Nowloading_mc
 □ レイヤー1 ・・・■|○|●| ←mediacomponent

QNo.2598084 の方の回答の場合は,
なぜかSWF のプリロード自体に 2フレーム 使用されていて
フレーム1 と 2 をループで回されていますから,
次のような感じにするということです。

 □ レイヤー3 ・・・■|○|○|○| ←ActionScript
 □ レイヤー2 ・・・■|●//|●| ←Nowloading_mc
 □ レイヤー1 ・・・■|○  |●| ←mediacomponent

何フレームに何を用意するとは決まった物ではありません。

その,
本体SWFの Nowloading に関する部分の注意と工夫が,
QNo.2598084 の回答,

> SWC ファイルで作られているコンポーネントは、
> リンケージを利用して swf ファイルに組み込まれます。
> デフォルトではフレーム1に書き出されるように設定されていますので、
> コンポーネントを多数利用するとフレーム1の容量が大きくなり、
> 続く Now Loading アニメがなかなか始まらなくなってしまいます。
 ~略~
> ここに、MediaPlayback コンポーネントのインスタンスが
> 初めてステージに登場するフレームを入力してください。
> 例えば、フレーム3に配置しているのであれば 3 を入力します。

の部分です。
ここは本体SWFに Nowloading を付けない場合は,関係がありません。
もし本体SWFに Nowloading を付ける場合は,
上で引用した部分のことを良く理解してその通りにしてください。


~・~・~・~・~・~・~・~・~・~・~

なお,
ムービープレビューのダウンロードのシミュレート機能を使っても,
FLV に関してはシミュレートが働きません。
ローカルだと一瞬でFLVがロードされてしまいます。
実際にネット上にアップするか,仮想サーバなどで実験しないと,
動作確認はできないと思います。

この回答への補足

ありがとうございました。
さっそくに作成してみました。ネット上にアップしましたが一瞬(2秒くらい)にして Nowloading表示が消え再生始めました。
ActionScript内容からして、Nowloading表示が消えたのでflv_per>=100 の判定が正になったのでしょうから大丈夫だと思いますが、少しだけ疑心の鬼が心に発生しています。

FLVファイルは60MBあります。学内LANの能力が高いのかなとも思いますが(過大評価すると)、自宅のADSLでもう一度確認します。取り急ぎの結果ご報告でした。

 

補足日時:2008/02/14 11:49
    • good
    • 0
この回答へのお礼

 □ レイヤー3 ・・・■|○| ←上記ActionScript
 □ レイヤー2 ・・・■|●| ←Nowloading_mc
 □ レイヤー1 ・・・■|●| ←mediacomponent
のご説明に 心の涙がでます。
「教えてgoo」の投稿は初めてでしたが、本当に心温かいご返信をいだたき、有頂天モードに入っています。私も誰かに何か答えたくなっています。それくらい、うれしいです。
明日、職場(学校)のパソコンに入っているFLASH8で試して、そしてネット上にアップして確認してみます。
・・・できそうな気がしています。
BlurFiltan様に合掌。・・・ありがとうございました。

お礼日時:2008/02/13 22:26

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