[英]Check VideoDisplay video is not null in flex
我有datagrid,其中包含具有視頻數據的行數。
<s:DataGrid id="movieGrid" dataProvider="{movieData}" selectionChange="setSource(event)" />
選擇行后,獲取視頻網址並在VideoDisplay中播放。
private function setSource(event:GridSelectionEvent):void
{
if(videoDisplay!=null)
{
var movie:String = movieGrid.selectedItem.flvLink;
videoDisplay.source = movie;
}
}
然后在播放時選擇它將播放視頻。
videoDisplay.play();
VideoDisplay:
<s:VideoDisplay id="videoDisplay" autoPlay="false" />
現在,moveData值來自服務器請求。
問題:
上面的方法效果很好,但是flvlink的某些錯誤,沒有視頻。
現在,我單擊鏈接錯誤的那一行,然后再次單擊正確的鏈接那那它在videodisplay中有錯誤。
TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。
如何,我可以跳過此錯誤。 無論如何,我可以得到那個鏈接是否有視頻文件。 如果不是,那么不將源應用於視頻顯示嗎?
編輯:
錯誤來自videoDisplay
類的videoPlayer.displayObject
。 其中displayObject
獲取null。
由於嘗試加載損壞的視頻文件(或任何其他非視頻內容)后VideoDisplay.videoObject
為null
,因此VideoDisplay.videoObject
該錯誤。
因此,為避免這種情況,您可以通過代碼控制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){
}
}
希望能對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.