2013-02-17 82 views
1

我有一個媒體播放器必須播放項目列表。用戶可以選擇其中一個,所以項目必須可選,另一方面,他們都可以按順序播放。但是當我按順序排隊時,看到那個madia球員跳過了一些物品。例如;媒體元素跳過播放列表中的某些項目

1 -> is played 
2 -> is played 
3 -> is skipped 
4 -> is played 
5 -> is skipped 
6 -> is skipped 
7 -> is skipped 
8 -> is played 

我無法理解這個問題的原因。有想法嗎?

這是我的媒體元素;

<StackPanel x:Name="PlayerStackPanel" Orientation="Horizontal"> 
     <MediaElement x:Name="Player" 
         MediaOpened="Player_MediaOpened"  
         MediaEnded="Player_OnMediaEnded"> 
     </MediaElement> 
    </StackPanel> 

選擇第一項後,選擇已更改的代碼運行;

void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (this.UsingLogicalPageNavigation()) this.InvalidateVisualState(); 

     PlayView(); 

     selectedItem = sender as Selector; 
     ContentItem pc = (ContentItem)selectedItem.SelectedItem; 
     if (pc != null && !string.IsNullOrEmpty(pc.AudioFilePath)) 
     { 
      Player.Source = new Uri(this.BaseUri, "../Assets/" + pc.AudioFilePath); 
      Player.Play(); 
     } 
     else 
      Player.Source = null;   
    } 

當第一個音頻項目結束,Player_OnMediaEnded方法被稱爲 我想增加的selectedIndex編程,這件事之後,選擇再次改變運行。

private void Player_OnMediaEnded(object sender, RoutedEventArgs e) 
    { 
     ticks.Stop(); 
     ticks.Tick -= ticks_Tick; 
     Player.Stop(); 
     if (this.itemListView.SelectedIndex != contentItems.Count-1) 
     this.itemListView.SelectedIndex += 1; 
    } 

隨着調試,看到,一個音頻文件結束後,被稱爲不止一個。而且這個通話計數也在不斷變化。

爲什麼我的代碼會產生這種行爲?

回答

0

已解決。

我正在使用持續時間滑塊,當媒體播放器結束時,它也必須結束。但在某些情況下,它們不能同步,因此持續時間滑塊不能正確地爲排隊的音頻項目正常工作,它會立即完成下一個項目並跳過其他項目。

相關問題