2017-08-30 5 views
-1

現在、動画のリストを表示するUWPアプリがあり、ユーザが動画の再生を開始すると、画面に触れると終了します。 PointerReleased(ビデオを停止してプレイヤーの可視性を隠すイベント)がonClickの直後に起動するので、ビデオは表示されません。onClickイベントが発生した場合、PointerReleasedイベントハンドラが起動しないようにする

さらに、ランダムなビデオは、アプリケーションがしばらくアイドル状態になったときに再生を開始します。これは、IsIdle変数に表示されます。

ボタンイベントをPointerReleasedに設定しようとしましたが、何もしていないようで、PointerPressedを使用してビデオを停止することはできません。

私の質問は、その時点でPointerReleasedイベントが発生しないようにする方法がありますか?これらのメソッドは、何かを変更する場合、異なるクラスに配置されます。いくつかの状況については

、ビデオを開始する方法はこれです:

 private async void startVideo(StorageFile video) 
     { 
      playing = true; 
      App.Current.IsIdle = true; 
      Windows.Storage.Streams.IRandomAccessStream stream; 
      stream = await video.OpenAsync(Windows.Storage.FileAccessMode.Read); 
      player.SetSource(stream, video.ContentType); 
      //VideoFadeIn.Begin(); 
      player.Visibility = Visibility.Visible; 
      //playerContainer.Visibility = Visibility.Visible; 
     } 

そしてIsIdleは、この方法でfalseに変更した場合:

Window.Current.CoreWindow.PointerReleased += onCoreWindowPointerMoved; 

     private void onCoreWindowPointerMoved(CoreWindow sender, PointerEventArgs args) 
     { 
      idleTimer.Stop(); 
      idleTimer.Start(); 
      IsIdle = false; 
     } 

このメソッドが呼び出されます。

public void onIsIdleChanged(Frame frame) 
    { 
     System.Diagnostics.Debug.WriteLine($"IsIdle: {App.Current.IsIdle}"); 
     if (App.Current.IsIdle == true) 
     { 
      player.Visibility = Visibility.Visible; 
      //VideoFadeIn.Begin(); 
      if(!playing) 
       playRandomVideo(); 
     } 
     if (App.Current.IsIdle == false) 
     { 
      //VideoFadeIn.Stop(); 
      player.Visibility = Visibility.Collapsed; 
      stopVideo(); 
      if (!playingSelected) 
       frame.Navigate(typeof(Calculadoras)); 
     } 
    } 
+0

なぜドンあなたは旗を使わない? 'onClick'に' flag = true'を設定すると 'if(flag == true)flag = false;返す; 'PointerReleased' –

+0

これはいつももっとも簡単な解決策です...もっと複雑な解決策を考えようとしている精神的なブロックのようです。 – user8296390

答えて

0

ビジェイが元の投稿のコメントを指摘したので、単にフラグを作成することができました。だから、似たようなシナリオで誰かのために、私はそれをやったのです:

1- falseで初期化されたフラグbool clickedSelected;が作成されました。ビデオは変更にそれをクリックする

2 - trueに:すべてがスキップされた後OnIsIdleChangedイベントで

playingSelected = true; 
clickedSelected = true; 
startVideo(video); 

、3- falseに戻ってそれを変更してください:

public void onIsIdleChanged(Frame frame) 
    { 
     System.Diagnostics.Debug.WriteLine($"IsIdle: {App.Current.IsIdle}"); 
     if (App.Current.IsIdle == true) 
     { 
      //VideoFadeIn.Begin(); 
      if (!playing) 
       playRandomVideo(); 
     } 
     if (App.Current.IsIdle == false) 
     { 
      //VideoFadeIn.Stop(); 
      if (!clickedSelected) 
      { 
       stopVideo(); 
       if (!playingSelected) 
        frame.Navigate(typeof(Calculadoras)); 
       else 
        playingSelected = false; 
      } 
      else 
      { 
       App.Current.IsIdle = true; 
       clickedSelected = false; 
      } 
     } 
    } 
+0

私は答えとして投稿することができると思ったが、そのok –

関連する問題