我正在使用NetStream播放本地.FLV文件。 NetStream接收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 :(得分:2)
即使文件不存在,Event.OPEN仍会响应。将此更改为ProgressEvent对我有用。
fileTest.addEventListener( ProgressEvent.PROGRESS, fileTest_progressHandler );
...
function fileTest_progressHandler( event:ProgressEvent ):void
{
fileTest.close();
// Your file exists
}
答案 1 :(得分:1)
你在使用AIR吗?您可以使用File类:
var f:File = new File();
f.nativePath = "path/to/your/FLV";
if (f.exists)
{
// Your file exists
}
else
{
// Your file doesn't exist
}
如果您正在开发网络播放器,那么在这种情况下您可能会使用URLLoader吗?像这样的东西?
var fileTest:URLLoader = new URLLoader();
fileTest.addEventListener( IOErrorEvent.IO_ERROR, fileTest_errorHandler );
fileTest.addEventListener( Event.OPEN, fileTest_openHandler );
fileTest.load( new URLRequest( "path/to/your/FLV" ));
function fileTest_errorHandler( event:Event ):void
{
// Your file doesn't exist
}
function fileTest_openHandler( event:Event ):void
{
fileTest.close();
// Your file exists
}
答案 2 :(得分:0)
警告:上面的代码示例有点误导。如果您忘记在路径中放置一个前导斜杠,那么上面设置nativePath字段的代码将因错误2004而崩溃,因为根相对路径始终以正斜杠开头(在macintosh上)。在Windows上,您将放入类似“C:\ my \ folder \ path \ filename.txt”
的路径通常,使用resolvePath函数会更安全,它使用正斜杠作为子文件夹的分隔符创建独立于平台的路径结构。即使您需要根相对路径,也可以使用resolvePath函数。在下面的代码中,您可以看到我们已经创建了一个相对于applicationDirectory的路径(这是AIR中的一个特殊的元文件夹名称),但是如果子路径有一个开始斜杠,那么该路径将是root相对的。
var f:File = File.applicationDirectory.resolvePath(subpath);
if (f.exists)
return T;
else
return F;