FLVPlaybackでエラー処理の仕方

このQ&Aのポイント
  • FLVPlaybackコンポーネントを使用してflv動画を読み込む方法と、エラー処理について説明します。
  • FLVPlaybackコンポーネントでflv動画を読み込む際に、パスが間違っていた場合やダウンロード中にエラーが発生した場合の対処方法を知りたいです。
  • progressイベントが動画のパスが間違っていた場合には発生しないため、エラー処理について具体的な方法を教えてください。
回答を見る
  • ベストアンサー

FLVPlaybackでエラー処理の仕方

Flash8 AS2 _root.attachMovie("FLVPlayback","mc_flvplayer",this.getNextHighestDepth()); _root.mc_flvplayer._width = 400; _root.mc_flvplayer._height = 300; _root.mc_flvplayer.load("movie/movie01.flv"); FLVPlaybackコンポーネントでflv動画を読み込んでいるんですが、 もしflv動画のパスが間違っていた場合やダウンロード中にエラーが発生した場合の エラー処理をどうすればいいか分かりません。 ヘルプにprogressイベントにそれっぽいことが書いてあるんですが動画のパスが間違っていた場合イベントそのものが発生しません。

  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

stateChange で FLVPlayback 状態のプロパティ state を参照すればロードエラーなどが取得できます。 書かれたコードの下に続くように,例えば次のコードを書きます。 var listenerObj:Object = new Object(); listenerObj.stateChange = function():Void { trace("state: "+mc_flvplayer.state); }; mc_flvplayer.addEventListener("stateChange", listenerObj); ファイルがない場合は connectionError という値(ストリング)が得られます。 ファイルがある場合は stopped という値(ストリング)が得られます。 その他得られる値の一覧がヘルプにあります。 http://livedocs.adobe.com/flash/8_jp/main/00003512.html これらの値を取得して, その状態によってそれぞれ処理を分岐をさせれば良いと思います。 なお, 私は作成者ではないので 「エラー処理の仕方」 自体は知りませんよ。 エラーが起きたときの処理は無数にあって,それに対する無数の手段があると思います。 別のFLVのロードにとりかかるとか, ロードエラーコメントを出すとか, 代替画像を表示させるとか, アナウンスを流すとか, 別アニメーションを再生させるとか, 別ページにgetURLさせるとか, Windowをクローズして誤魔化すとか, お詫びに壁紙でもプレゼントするとかとか… 何かの対処を用意してください。

studentE5T
質問者

お礼

ありがとうございます。無事エラーを拾えました。 ヘルプに書いてあるんですね。調査不足でした・・・ エラー処理の仕方についてはエラーコメントを出したいと思います。 ありがとうございました。

関連するQ&A

  • ActionScript2.0のイベントについて

    親ムービークリップに配置した子ムービークリップのイベントが実行されなくて困っています。 親ムービークリップ自体には下記のイベントを設定しています。親ムービークリップはattachMovieで動的に配置しています。 onRollOver・・・onEnterFrameを設定 onRollOut・・・onEnterFrameを削除 子ムービークリップを配置して子ムービークリックにイベントを設定しました。onEnterFrameをは実行されますが、onReleaseが実行されず困っています。 function Parent() { this.onRollOver = function() { this.onEnterFrame = function(){・・・} } this.onRollOut = function(){ delete this.onEnterFrame; } this["child_mc"].onRelease = function() { trace('a') // 実行されない } this["child_mc"].onEnterFrame = function() { trace('b') // 実行される } } ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ _root.attachMovie("Parent", "parent_mc", _root.getNextHighestDepth(), new Parent()); 子ムービークリップはオーサリングで静的にParentに配置し、プロパティでchild_mcと設定しています。 onReleaseは実行できず、そこで止まっています。 なんでも良いので教えてください。

    • ベストアンサー
    • Flash
  • ActionScript 孫のパス

    こんにちは。 今Flashを編集しているのですが、(初心者です) ┏━━━━━━━┓ ┃┌─────┐┃ ┃│ mc1_1    │┃ ┃└─────┘┃ ┃           ┃ ┗━━mc1━━━┛ mc~はムービークリップのインスタンス名です。 上のようにmc1の中にさらにmc1_1というムービークリップがある、という形です。 「_root.mc1.mc1_1.onRollOver~」のように指定したイベントが動きません。 (onReleaseも同様) 「_root.mc1.onRollOver~」は正常に動きました。 ただし、 「_root.mc1.mc1_1._visible = ~」のように書くと、ちゃんと動作していました。 この場合どういった原因が思い当たりますか? パスが間違っているんでしょうか… ちなみにCS3、ActionScript2.0です。 よろしくお願いします。

  • ScrollPaneからmcをドラッグして外に出したい

    たとえば50個のmcから好きな5つを選んで、順番に決められた場所へドロップできる swfムービーを製作しています。 50個のmcはswfムービーの領域には並べ切れなかったので、ScrollPane内に 並べようと考えました。Flashのライブラリウィンドウからステージ上に インスタンスをドロップできるのと似たインターフェイスです。 左側50%に“ドロップ領域”右側50%に“ScrollPane”を配置しました。 Flash MX 2004 Pro 環境で、_rootにScrollPaneを配置。縦方向にスクロールさせます。 そのcontentPathに設定したmc上に、50個のmc(obj_mc)をattachMovie()しました。  this.content.attachMovie("obj_mc",objName,objDepth); このobj_mcをドラッグし、左側の“ドロップ領域”(ScrollPaneの外)にドロップ したいので、obj_mcでstartDrag()を呼び出します。 しかしScrollPaneの外へドラッグしていくと、obj_mcはScrollPaneの“裏側”に 入ってしまい「ScrollPaneの外へ出す」ことは出来ません。 たとえばswapDepth(_root.getNextHighestDepth())しても、上には出ません。 これを回避して、外に出す為の考え方を、どなたか教えてもらえませんでしょうか? obj_mcのonPress時に、ScrollPaneから“切り離す”ことが出来ればよいのでは ないかとは思っているのですが…。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • swapDepths について

    ※FLASH 5 を使っています。 attachMovie で複製した MC での swapDepths について教えて下さい。 まず attachMovie をする為の素材を作ります。 丸い図形を作り、それをボタンにし 『 ボタン1 』 とします。 そのボタンを MC にして 『 MC1 』 とします。 『 MC1 』 をリンケージで識別子を 『 MARU 』 とします。 『 MC1 』 に配置された 『 ボタン1 』 に下記 AS を書きます。 on (press) { this.swapDepths(_root.HAICHI.maxdepth++); startDrag (""); } on (release) { stopDrag (); } 別に配置用の空の MC を作り、ステージ上に配置し 『 HAICHI 』 と名前を付けます。 更にステージ上に 『 ボタン1 』 を配置して、そのボタンに下記 AS を書きます。 on (release) { i ++; _root.HAICHI.attachMovie( "MARU", "MARU"+i, _root.HAICHI.maxdepth++ ); _root.HAICHI["MARU"+i]._x = 50; _root.HAICHI["MARU"+i]._y = _ymouse; } これでボタンを押すと丸い形の MC が複数配置できるようになります。 また複製された MC のうち背後にある MC をクリックすると、その MC が最前面に配置 されるようになります。 ここまでは良いのですが、新たに 『 MC2 』 を作り、そこに 『 MC1 』 を配置します。 つまり『 MC2 』 の中に 『 MC1 』 が配置され 『 MC1 』 の中に 『 ボタン1 』 が配置 されている状態です。 更に 『 MC1 』 のリンケージを解除して、『 MC2 』 にリンケージで識別子を 『 MARU 』 とします。 このようにした場合、ボタンを押すと MC の複製は出来るのですが、MC をクリックしても 最前面には出て来ません。 ムービークリップのムービークリップでは swapDepths は利かないのでしょうか? MC にも AS を書きたいので、どうしても入れ子にしなければなりません。 何か良い方法がありましたら教えて頂けますよう宜しくお願い致します。

    • ベストアンサー
    • Flash
  • FLVPlaybackのcontentpathを外部入力する方法

    こんにちは。 FLVPlaybackを用いて、FLVを再生しようと考えています。 その際に、FLVのファイル名を外部テキストから、入力したい と考えています。 FLVはFMSにあり、FLVPlaybackのインスペクタ内のcontentpathに 下記で設定しているパスとファイル名を入力すると、正常に 再生されますので、パスは問題ないと思われます。 トレースの結果、my_urlは、video.flvの呼び出しは成功しています。 ただ、contentpathをトレースすると、 rtmp://****/test/undefinedとなります。 ということは、 + my_url; にファイル名がわたってないように思います。 記述がおかしいのでしょうか? ご教授いただければ幸いです。 FLVPlaybackのインスタンス・・・flvPlayer 外部テキストファイル名・・・my_url.txt 外部テキスト内部・・・my_url=video.flv my_url = new LoadVars(); my_url.load("my_url.txt"); my_url.onLoad = myFunction; function myFunction(bSuccess) { if (bSuccess) { trace(this.my_url); flvPlayer.contentPath= "rtmp://****/test/" + my_url; trace("rtmp://****/test/" +my_url.contentPath ); } else { trace("受信失敗"); } } my_url.load("my_url.txt");

  • actionscript2.0でMCの切り替えなど

    Flash初心者で勉強中の身なのですがどうか質問させてください。 根本的に間違っていたりできないことをやろうとしていたら申し訳ないです。。 その際にはこう改変した方がいいとのご指示をご教示頂きたいです。よろしくお願いいたします。 attachMovieを使ってライブラリ内のMCをステージに呼び出し、そのMCを押す度にそのMCを切り替えたいと考えています。 ライブラリにはa1,a2,,,a5、b1,b2,,,,b5,c1,d1,e1…という識別子をつけたMCを用意しています。 a-eの横幅は80×80です。 20ずつ間を空けて○1のMCを横一列に配置しました。 _root.attachMovie("a1", "a1",1, {_x: 100, _y: 100}); _root.attachMovie("b1", "b1",1, {_x: 200, _y: 100}); _root.attachMovie("c1", "c1",1, {_x: 300, _y: 100}); _root.attachMovie("d1", "d1",1, {_x: 400, _y: 100}); _root.attachMovie("e1", "e1",1, {_x: 500, _y: 100}); このMCを押すと、MCが数字の大きいものに切り替わる(b1を押すとb2のMCに…で5まで)ようにしたいので、 ひとつひとつを下記のscriptで記述しました。 _root.attachMovie("b1", "b1",1, {_x: 200, _y: 100}); b1.onPress=function(){ b1.removeMovieClip(); _root.attachMovie("b2", "b2",1, {_x: 200, _y: 100}); b2.onPress=function(){ b2.removeMovieClip(); _root.attachMovie("b3", "b3",1, {_x: 200, _y: 100}); b3.onPress=function(){ b3.removeMovieClip(); _root.attachMovie("b4", "b4",1, {_x: 200, _y: 100}); b4.onPress=function(){ b4.removeMovieClip(); _root.attachMovie("b5", "b5",1, {_x: 200, _y: 100});}}}} これをa-e同じことを繰り返しています。 ここからが問題なのですが、 ここで例えば a2,b5,c1,d3,e1 という風に適当に押されてMCが切り替わり、整列させるボタンが押された時、 その数字を参照して 縦に20pxずつ空けながら b5 (空行/4があった場合の行) d3 a2 c1(20pxの空白)e1 と並べ替えたいと思っています。 つまり、a-eが現在どの数字(○1,○2..)なのかを調べ、その数字の若い方から順に縦に配置させたいと考えています。 また、上のc1,e1のように1の数字のMCが2つ以上あった場合は、同じ行に20pxずつ空けて横に配置していきたいのです。 その調べた数字の順に縦と横に並べ替える(新たにステージ上に配置し直す)というルール付けをどういうscriptを書けば上手く行くかが自分ではどうにも分からず、ここから進めない状態です。。 誰がどんな回数押したとしてもそれに準じた整列をして欲しいのですが、そのやり方があるようでしたらどうかご教示頂きたいです。 また、上記の私の書き方では難しいようでしたらそこから改変したものをお教え願いたいです。 分からないことばかりで申し訳ないのですが、何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 【ActionScript】createEmptyMovieClipの寸法を変えたい

    FLASH8(Win-XP)使用者です。 createEmptyMovieClipで生成したMCに外部画像を読み込む場合、その画像の寸法を変える場合どうしたらいいでしょうか? (attachMovie以外でお願いいたします。) _root.obj.createEmptyMovieClip("mc", 0); _root.obj.mc.loadMovie("aaa.swf"); _root.obj.mc._width = 100; ですと読み込んだ画像は消えてしまいます。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • attachMovieがうまくいかなくて困ってます

    はじめに、ミサイルのイメージが飛んでいく"MC"というムービークリップを作成して、それを onClipEvent (mouseDown){    _root.attachMovie("MC","MC",1); } でレイヤー上に作成すると、MCのモーションが1フレーム目を飛び越えて2フレーム目から始まってしまいます。 MCは10フレームで終わり、繰り返し再生されるのですが2週目からはきちんと1フレーム目から始まります。 そのせいで、1発目と2発目以降のミサイルの発射位置がずれてしまいます。 どうすれば1発目もきちんと1フレーム目から再生できるのでしょうか? どなたか教えてください。

    • ベストアンサー
    • Flash
  • eval関数を利用して複数の処理を1つのfunctionで行う

    こんにちは。 困ったので質問させてください。 今、MX2004のFLASHを使ってあるゲームを作成しています。 「XXX」とリンゲージ名をつけたムービークリップを          for(i=0;i<=100;i++){     obj = _root.attachMovie("XXX", "mc"+i, i);//MCの作成     obj._x = table_x[i];//X軸の値の格納テーブル     obj._y = table_y[i];//Y軸の値の格納テーブル     } で100個のムービックリップを画面上に『mc+連番(以下「mc●●」)』と名前をつけてで作成しました。 この画面上に作成したムービークリップmc●●をクリックするとTraceで「OK」と表示したいのですが・・・     mc1.onMouseUp = function(){       Trace("OK");     }     mc2.onMouseUp = function(){       Trace("OK");     }     mc3.onMouseUp = function(){       Trace("OK");     }     ・     ・×97回     ・ この様にmc●●と同じ数だけ100回同じような文を記述する方法しかないのでしょうか? 個人的には 『eval("_root.mc"+i)』を利用して同じような構文は削除したいのですが良い方法が思いつきません。 何か良い方法がありましたらご教授ください。 お願いします。

  • attachMovieで生成したインスタンスへの文字代入

    FlashMX(AS1.0)を使用しています。 ダイナミックテキストを子にしたムービークリップのインスタンスをattachMovieで配置したのですが、ダイナミックテキストに文字列を代入しても文字のみが表示されません。 試しに、duplicateMovieClipでコピーした場合はダイナミックテキスト内の文字は表示されています。 スクリプトは以下のように組んでいます。 (略) 1:cnt++; 2:samp_mc = "tag"+cnt; 3:_root.attachMovie("sym_ln",samp_mc,cnt);//sym_ln...ダイナミックテキストを含んだシンボルのリンケージ 4:samp_mc.dymtxt = "123";//dymtxt...ダイナミックテキストの変数名 インスタンスを配置してもdymtxtに表示されません。が、 3:base_mc.duplicateMovieClip(samp_mc,cnt);//base_mc...ステージに配置したmcのインスタンス名 とすると表示されます。 attachMovieを使用してインスタンスを配置するようにしたいのですが、文字が表示されないのはどこに原因があるのでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう