我目前有一個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