2012-01-14 13 views
2

NetStreamを使用してローカルの.FLVファイルを再生しています。 NetStreamはFLVファイルの名前を受け取ります。AS3:FLVファイルが存在するか確認する

再生する前にFLVが存在するかどうかを確認するにはどうすればよいですか?可能であれば、存在しないビデオを再生しようとするとイベントがスローされますか?

// Doesn't catch an error if the FLV does not exist 
try { 
    ns.play("MyFLV.flv"); 
} catch (e:Error) { 
    trace("File does not exist"); 
} 
+0

これはそれを行う必要があります:http://stackoverflow.com/questions/3335790/how-to-: は、[1] [1] [FLVが存在するかどうかを確認します] FLVPlayback-in-Use-Flvplayback-inの前に存在するFLVファイルのチェック – John

+0

FLVPlaybackクラスではなくNetStreamのみを使用しているため、動作しません。 – Abdulla

答えて

2

ファイルが存在しない場合でもEvent.OPENは応答します。これをProgressEventに変更すると私にとってうまくいった。

fileTest.addEventListener(ProgressEvent.PROGRESS, fileTest_progressHandler); 

... 

function fileTest_progressHandler(event:ProgressEvent):void 
{ 
    fileTest.close(); 
    // Your file exists 
} 
1

あなたはAIRをまったく使用していますか?あなたはFileクラスを使用することができます:あなたはwebplayerカントーを開発している場合

var f:File = new File(); 
f.nativePath = "path/to/your/FLV"; 
if (f.exists) 
{ 
    // Your file exists 
} 
else 
{ 
    // Your file doesn't exist 
} 

あまり助けを、あなたはおそらく、その場合にはURLLoaderクラスを使用することができますか?このようなもの?

0

警告:上記のコード例は少し誤解を招く場合があります。パスに先行するスラッシュを忘れた場合、ルート相対パスは常にスラッシュ(macintosh上)で始まるため、nativePathフィールドを設定する上のコードはエラー2004でクラッシュします。 Windowsでは、 "C:¥my¥folder¥path¥filename.txt"のようなパスを挿入します。

一般に、プラットフォームに依存しないパス構造を作成するresolvePath関数を使用すると、スラッシュサブフォルダの区切り文字として使用します。ルート相対パスが必要な場合でも、resolvePath関数を使用できます。以下のコードでは、applicationDirectory(AIRの特別なメタフォルダ名)に関連するパスを作成したことがわかりますが、サブパスに開始スラッシュがある場合、そのパスはルート相対です。

var f:File = File.applicationDirectory.resolvePath(subpath); 
if (f.exists) 
    return T; 
else 
    return F; 
関連する問題