检查 VideoDisplay 视频在 flex 中不为空
Check VideoDisplay video is not null in flex
我有数据网格,其中包含具有视频数据的行数。
<s:DataGrid id="movieGrid" dataProvider="{movieData}" selectionChange="setSource(event)" />
在第 select 行获取视频 url 并在 VideoDisplay 中播放。
private function setSource(event:GridSelectionEvent):void
{
if(videoDisplay!=null)
{
var movie:String = movieGrid.selectedItem.flvLink;
videoDisplay.source = movie;
}
}
在播放时 select 它将播放视频。
videoDisplay.play();
视频显示:
<s:VideoDisplay id="videoDisplay" autoPlay="false" />
现在 moveData 值来自服务器请求。
问题:
以上效果很好,但是,
flvlink的部分内容不对,没有视频。
现在我点击那个有错误 link 的行,然后再次点击右边的 link 行然后它在视频显示中有错误。
TypeError: Error #1009: Cannot access a property or method of a null object reference.
如何,我可以跳过这个错误吗?无论如何我可以得到 link 是否有视频文件。如果不是,则不将源应用到视频显示?
编辑:
错误出现在 videoDisplay
videoPlayer.displayObject
class。其中 displayObject
为空。
该错误被触发是因为在尝试加载损坏的视频文件(或任何其他非视频内容)后 VideoDisplay.videoObject
是 null
。
因此,为了避免这种情况,您可以通过代码控制一个 VideoDisplay
对象,并在每次 videoObject
为 null 时重新初始化它。
为此,举个例子:
<s:DataGrid id="movieGrid" dataProvider="{movieData}" selectionChange="playVideo(event)" />
<s:Group id="videoDisplayContainer" />
和
private var videoDisplay:VideoDisplay;
private function initVideoDisplay(): void
{
videoDisplay = new VideoDisplay();
videoDisplay.autoPlay = false;
videoDisplay.percentWidth = 100;
videoDisplay.percentHeight = 100;
videoDisplayContainer.addElement(videoDisplay);
}
protected function playVideo(event:GridSelectionEvent):void
{
if(!videoDisplay || !videoDisplay.videoObject){
initVideoDisplay();
}
var movie:String = movieGrid.selectedItem.flvLink;
try {
videoDisplay.source = movie;
} catch(e:Error){
}
}
希望能帮到你。
我有数据网格,其中包含具有视频数据的行数。
<s:DataGrid id="movieGrid" dataProvider="{movieData}" selectionChange="setSource(event)" />
在第 select 行获取视频 url 并在 VideoDisplay 中播放。
private function setSource(event:GridSelectionEvent):void
{
if(videoDisplay!=null)
{
var movie:String = movieGrid.selectedItem.flvLink;
videoDisplay.source = movie;
}
}
在播放时 select 它将播放视频。
videoDisplay.play();
视频显示:
<s:VideoDisplay id="videoDisplay" autoPlay="false" />
现在 moveData 值来自服务器请求。
问题:
以上效果很好,但是,
flvlink的部分内容不对,没有视频。
现在我点击那个有错误 link 的行,然后再次点击右边的 link 行然后它在视频显示中有错误。
TypeError: Error #1009: Cannot access a property or method of a null object reference.
如何,我可以跳过这个错误吗?无论如何我可以得到 link 是否有视频文件。如果不是,则不将源应用到视频显示?
编辑:
错误出现在 videoDisplay
videoPlayer.displayObject
class。其中 displayObject
为空。
该错误被触发是因为在尝试加载损坏的视频文件(或任何其他非视频内容)后 VideoDisplay.videoObject
是 null
。
因此,为了避免这种情况,您可以通过代码控制一个 VideoDisplay
对象,并在每次 videoObject
为 null 时重新初始化它。
为此,举个例子:
<s:DataGrid id="movieGrid" dataProvider="{movieData}" selectionChange="playVideo(event)" />
<s:Group id="videoDisplayContainer" />
和
private var videoDisplay:VideoDisplay;
private function initVideoDisplay(): void
{
videoDisplay = new VideoDisplay();
videoDisplay.autoPlay = false;
videoDisplay.percentWidth = 100;
videoDisplay.percentHeight = 100;
videoDisplayContainer.addElement(videoDisplay);
}
protected function playVideo(event:GridSelectionEvent):void
{
if(!videoDisplay || !videoDisplay.videoObject){
initVideoDisplay();
}
var movie:String = movieGrid.selectedItem.flvLink;
try {
videoDisplay.source = movie;
} catch(e:Error){
}
}
希望能帮到你。