簡體   English   中英

檢查Flex中的VideoDisplay視頻是否不為null

[英]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.videoObjectnull ,因此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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM