页面之间导航 C# UWP

Posted

技术标签:

【中文标题】页面之间导航 C# UWP【英文标题】:navigation between pages C# UWP 【发布时间】:2021-11-29 00:32:16 【问题描述】:

我创建了一个游戏,其中有优秀的玩家试图逃离坏人。我的游戏运行良好,但我的问题是我不知道如何创建游戏结束画面。 当您开始播放时,您看到的第一个屏幕(使用 xaml 设计创建的空白页面)是开始屏幕,您可以单击“开始”并导航(使用本指南的导航框架:https://docs.microsoft.com/en-us/windows/apps/design/basics/navigate-between-two-pages)到主页 - 其中游戏正在发生。 我想创建另一个在游戏结束时显示的屏幕或窗口:如果好玩家只与一个坏人呆在一起,你可以在游戏中获胜,或者如果坏人抓住你,你可能会输掉游戏。那么如何在 if 条件中使用 Navigate 方法呢?我需要另一个活动吗? (以及哪一个)或者有另一种方法来创建游戏结束画面,这取决于游戏规则? 请记住 - 在这种情况下,我没有两个元素(如按钮)可以单击以转到游戏结束屏幕。

我有一个名为 Manager 的类,负责所有游戏逻辑并检查游戏是否结束。在这段代码中,我正在检查坏人之间的勾结——如果他们相互碰撞,则“移除”一个。这是我想添加我的 If 条件的地方之一,以查看游戏是否结束 - 如果结束 - 导航\呈现我的结束游戏屏幕:

    class Manager

    //claulating collision between baddies
    //checking each time if one of the baddies (loop 1) collides another (going throw the rest of the baddied - loop 2) 
    int x, y, t, l, width, height;

    public void baddiesCollision(Baddies[] baddiesArr)
    
        for (int i = 0; i < baddiesArr.Length; i++)
        
            x = (int)baddiesArr[i].ImgLeft; //represent the position of ImgLeft on the first to compare-baddie
            y = (int)baddiesArr[i].ImgTop; //represent the position of ImgTop on the first to compare-baddie
            width = baddiesArr[i].PlayerWidth;
            height = baddiesArr[i].PlayerHeight;
            for(int j=i+1; j<=baddiesArr.Length-1; j++)
            
                t = (int)baddiesArr[j].ImgLeft; //represent the position of ImgLeft on the next to compare-baddie
                l = (int)baddiesArr[j].ImgTop; //represent the position of ImgTop on the next to compare-baddie
                if (x <= t && t < x + width && y <= l && l <= y + height)
                
                    baddiesArr[j].badPlayer.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                
                else if (x <= t + width && t + width <= x + width && y <= l && l <= y + height)
                
                    baddiesArr[j].badPlayer.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                
                else if (x <= t && t <= x + width && y <= l + height && l + height <= y + height)
                
                    baddiesArr[j].badPlayer.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                
                else if (x <= t + width && t + width <= x + width && y <= l + height && l + height <= y + height)
                
                    baddiesArr[j].badPlayer.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                
            
       **if(there is only one baddie that stayed --> go to End Game Screen)**
        
    


【问题讨论】:

【参考方案1】:

我不知道这是否是您要查找的内容,但如果您希望在页面之间导航,请使用以下代码:

Frame.Navigate(typeof(newPage));

【讨论】:

显然,您创建了一个新类 .xaml 以在使用这段代码之前导航到。 不幸的是它不起作用。如果我通过代码添加:Frame.Navigate(typeof(EndScreen)); (我添加了一个名为 EndScreen 的空白页面)我收到此消息:“非静态字段、方法或属性 'Frame.Navigate(Type)' 需要对象引用”我不确定这意味着什么,我应该如何处理。 今天我偶然发现了this也许这对你有帮助。

以上是关于页面之间导航 C# UWP的主要内容,如果未能解决你的问题,请参考以下文章

导航页面时是不是所有 UWP 应用都会泄漏内存?

(UWP)尝试使用导航器打开时打开空 html 文件的 Web 视图,源文件位于 c# 导航的应用程序包中

页面(视图)之间的 C# WPF 导航

UWP导航到PivotPage

在 UWP 中一段时间​​后自动导航到新页面

在UWP中页面滑动导航栏置顶