- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 enum
在主菜单上使用,但我遇到了一个错误,我已经查看了一段时间,但找不到问题所在。
我正在做的是为菜单的每一页我有一个类保存图像和矩形。当鼠标悬停在图像上并单击时,会将字符串更改为名称以使程序执行某些操作。
由于某些原因,当我的 TitleScreen.cs
更新时,字符串 mouseOn
不会从 "None"
更改。怎么了?
标题屏幕类:
public class TitleScreen
{
Game1 game1;
public void Initialize()
{
game1 = new Game1();
}
public void Update(GameTime gameTime)
{
MouseState mouse = Mouse.GetState();
if (mouse.LeftButton == ButtonState.Pressed && game1.mouseUsed == false && game1.mouseActive == true)
{
if (play.Contains(mouse.X, mouse.Y))
{
game1.mouseOn = "Play";
game1.mouseUsed = true;
}
else if (title.Contains(mouse.X, mouse.Y))
{
game1.mouseOn = "Title";
game1.mouseUsed = true;
}
else if (options.Contains(mouse.X, mouse.Y))
{
game1.mouseOn = "Options";
game1.mouseUsed = true;
}
else if (quit.Contains(mouse.X, mouse.Y))
{
game1.mouseOn = "Quit";
game1.mouseUsed = true;
}
}
}
在主类中:
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
images = new Images();
startup = new StartUp();
resolution = new Resolution(new Vector2(screenWidth, screenHeight));
options = new Options();
credits = new Credits();
titlescreen = new TitleScreen();
images.Content = Content;
graphics.PreferredBackBufferHeight = (int)resolution.screenResolution.Y;
graphics.PreferredBackBufferWidth = (int)resolution.screenResolution.X;
graphics.ApplyChanges();
}
protected override void Initialize()
{
titlescreen.Initialize();
base.Initialize();
}
最佳答案
您正在 TitleScreen 类中创建另一个 Game 对象。我不确定为什么你需要在标题屏幕中引用完整的 Game 类,如果它只是用于输入命令,你通常最好创建一个单独的输入类并引用它。不管怎样,如果你想正确引用 Game1 而不是新的,你需要这样做:
public class TitleScreen
{
Game1 game1;
public void Initialize(Game game1) //Or (Game1 game1) both work since Game1 is a child from Game.
{
this.game1 = new Game1();
}
}
现在,当您在 TitleScreen 对象上调用 Initialize 方法时,您使用 this
将 Game1 对象传递给它。
protected override void Initialize()
{
titlescreen.Initialize(this);
base.Initialize();
}
如果您实际上正在检查 Game1 类中的输入,则不会将其传递给 TitleScreen。解决此问题的最简单方法是按照我们上面所做的相同方式在您的更新方法中传递 Game1。
public void Update(GameTime gameTime, Game1 game1)
{
this.game1 = game1;
MouseState mouse = Mouse.GetState();
}
同样,您需要在 Game1 更新方法中传递每个更新循环:
titleScreen.Update(gameTime, this);
我不能保证这会奏效,您可能只需要一个更好的架构(恕我直言,只传递完整的 Game1 对象并不是一个好主意)。当我需要 Game1 中的特定内容时,我只是为它创建属性并引用它。我确实希望事情能为您弄清楚一点,这很像您正在传递 GameTime 和 SpriteBatch,如果您已经传递了整个 Game1 对象,则不需要传递它们。
关于c# - 引用类和字符串使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561367/
如何使用 SPListCollection.Add(String, String, String, String, Int32, String, SPListTemplate.QuickLaunchO
我刚刚开始使用 C++ 并且对 C# 有一些经验,所以我有一些一般的编程经验。然而,似乎我马上就被击落了。我试过在谷歌上寻找,以免浪费任何人的时间,但没有结果。 int main(int argc,
这个问题已经有答案了: In Java 8 how do I transform a Map to another Map using a lambda? (8 个回答) Convert a Map>
我正在使用 node + typescript 和集成的 swagger 进行 API 调用。我 Swagger 提出以下要求 http://localhost:3033/employees/sear
我是 C++ 容器模板的新手。我收集了一些记录。每条记录都有一个唯一的名称,以及一个字段/值对列表。将按名称访问记录。字段/值对的顺序很重要。因此我设计如下: typedef string
我需要这两种方法,但j2me没有,我找到了一个replaceall();但这是 replaceall(string,string,string); 第二个方法是SringBuffer但在j2me中它没
If string is an alias of String in the .net framework为什么会发生这种情况,我应该如何解释它: type JustAString = string
我有两个列表(或字符串):一个大,另一个小。 我想检查较大的(A)是否包含小的(B)。 我的期望如下: 案例 1. B 是 A 的子集 A = [1,2,3] B = [1,2] contains(A
我有一个似乎无法解决的小问题。 这里...我有一个像这样创建的输入... var input = $(''); 如果我这样做......一切都很好 $(this).append(input); 如果我
我有以下代码片段 string[] lines = objects.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.No
这可能真的很简单,但我已经坚持了一段时间了。 我正在尝试输出一个字符串,然后输出一个带有两位小数的 double ,后跟另一个字符串,这是我的代码。 System.out.printf("成本:%.2
以下是 Cloud Firestore 列表查询中的示例之一 citiesRef.where("state", ">=", "CA").where("state", "= 字符串,我们在Stack O
我正在尝试检查一个字符串是否包含在另一个字符串中。后面的代码非常简单。我怎样才能在 jquery 中做到这一点? function deleteRow(locName, locID) { if
这个问题在这里已经有了答案: How to implement big int in C++ (14 个答案) 关闭 9 年前。 我有 2 个字符串,都只包含数字。这些数字大于 uint64_t 的
我有一个带有自定义转换器的 Dozer 映射: com.xyz.Customer com.xyz.CustomerDAO customerName
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 关闭 6 年前。 我想了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是
我已阅读 this问题和其他一些问题。但它们与我的问题有些无关 对于 UILabel 如果你不指定 ? 或 ! 你会得到这样的错误: @IBOutlet property has non-option
这两种方法中哪一种在理论上更快,为什么? (指向字符串的指针必须是常量。) destination[count] 和 *destination++ 之间的确切区别是什么? destination[co
This question already has answers here: Closed 11 years ago. Possible Duplicates: Is String.Format a
我有一个Stream一个文件的,现在我想将相同的单词组合成 Map这很重要,这个词在 Stream 中出现的频率. 我知道我必须使用 collect(Collectors.groupingBy(..)
我是一名优秀的程序员,十分优秀!