現在、動画のリストを表示する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));
}
}
を
なぜドンあなたは旗を使わない? 'onClick'に' flag = true'を設定すると 'if(flag == true)flag = false;返す; 'PointerReleased' –
これはいつももっとも簡単な解決策です...もっと複雑な解決策を考えようとしている精神的なブロックのようです。 – user8296390