gpt4 book ai didi

c# - 游戏循环内的 Monogame XAML 读出文本框

转载 作者:行者123 更新时间:2023-11-30 14:58:36 25 4
gpt4 key购买 nike

嘿嘿,

我目前正在为 Windows 8/Metro 开发我的第二个 XNA/Monogame 游戏,但遇到了问题。我们现在需要存储一个附有名称的高分,因此我需要处理屏幕键盘以获取信息。

我在论坛中进行了搜索,发现了一些与此相关的主题,但没有包含示例代码或描述的帖子可以帮助我完全解决我的问题。我将我的项目更改为 XAML 模板,我的 GamePage 中有一个 TextBox,但现在我需要在我的游戏循环中获取 TextBox 才能读出它,这样我就可以保存我的分数之外的名称,我目前不知道如何做这个。

我当前的 GamePage.cs 代码

    public GamePage(string launchArguments)
{
this.InitializeComponent();

// Create the game.
_game = XamlGame<Main>.Create(launchArguments, Window.Current.CoreWindow, this);

txtTest.TextChanged += txtTest_TextChanged;
}

void txtTest_TextChanged(object sender, TextChangedEventArgs e)
{
Debug.WriteLine(txtTest.Text); //Write content to public string in Main.cs
}

我发现了如何将 TextBox 的内容写入我的游戏循环中的字符串,但现在我无法从我的游戏循环中控制 TextBox 的属性,以便我可以设置可见性和焦点。我是否需要创建自己的 EventHandler,它会监视我是否设置了 bool 值或其他东西?

提前致谢。

问候,

对于T3X

最佳答案

免责声明:我只想说,我之前从未使用过 Windows 8 XAML 项目或 GamePage 类,但在进行了一些谷歌搜索后,我认为我的理解足以提供帮助。

看来您的问题归结为循环依赖。您希望在 GamePage 和 Game 类之间进行双向通信。

从 GamePage 到 Game 类的通信很容易,因为 GamePage 已经负责创建 Game 类并将其存储在 _game 成员变量中。因此,要将消息从 GamePage 发送到 Game,您只需向 Game 类添加一个方法,例如:

void txtTest_TextChanged(object sender, TextChangedEventArgs e)
{
_game.SetHighscoreName(txtTest.Text);

Debug.WriteLine(txtTest.Text); //Write content to public string in Main.cs
}

以另一种方式(从 Game 到 GamePage)进行通信有点棘手,但可以使用接口(interface)和属性注入(inject)来解决。

首先,创建一个属于您的 Game 类的界面。我的意思是;它与 Game 类位于同一个项目和/或命名空间中。它可能看起来像这样:

public interface IGamePageController
{
void ShowHighscoreTextBox();
}

然后,像这样向您的 Game 类添加一个属性:

public IGamePageController GamePageController { get; set; }

接下来,让 GamePage 类像这样实现接口(interface):

public partial class GamePage : PhoneApplicationPage, IGamePageController
{
//...

public void ShowHighscoreTextBox()
{
txtTest.Visibility = Visibility.Visible;
}
}

最后,在 GamePage 构造函数中,您需要设置 GamePageController 属性。

// Create the game.
_game = XamlGame<Main>.Create(launchArguments, Window.Current.CoreWindow, this);
_game.GamePageController = this;

一旦你有了这个模式,就可以很容易地为你的 Game 和 GamePage 类添加新的通信方式,方法是向接口(interface)或 Game 类添加更多方法。

关于c# - 游戏循环内的 Monogame XAML 读出文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com