0

尝试使用从浮点数转换的 int 创建矩形时的小问题。

 CafBar.Position = new Vector2(30, 10);
 int CafLvlRound = (int)Math.Round(Player.CafLvl);
 CafRectangle = new Rectangle(CafBar.Position.X, CafBar.Position.Y, CafLvlRound, CafBar.Size.Height);

我的问题是,当我使用“CafLvlRound”作为第三个参数时,我收到两个错误,说 CafBar.Position.X 和 CafBar.Position.Y 是浮点数,需要转换为整数,当它们被明确分配为 30 的整数时和 10?然后当我删除第三个参数时,错误消失了。

任何人都知道如何解决这个问题或解决它?

4

4 回答 4

1

Vector2 只保留浮点数。30 和 10 是整数,但 Vector2 构造函数将它们隐式转换为浮点数。矩形有 4 个整数参数,因此每个参数都必须是整数。请参阅http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.rectangle.aspx

于 2013-05-30T19:05:50.367 回答
1

CafBar.Position.X并且CafBar.Position.Y是浮点数,您知道这两个值都可以转换为 int

所以,

  CafRectangle = new Rectangle((int)CafBar.Position.X, (int)CafBar.Position.Y, CafLvlRound, CafBar.Size.Height);
于 2013-05-30T19:09:06.817 回答
1

您应该(int)value在需要转换为 int 和(float)value需要转换为 float 时放置。

于 2013-05-30T19:10:36.873 回答
1

Vector2构造函数 显然将 2 个浮点数作为参数,因此您传递的内容将被解释为浮点数,而不是整数。

如果您同时查看XY字段,它们显然都是浮点数。

RTFM,伙计。是你的朋友。您应该更改代码以在此上下文中使用浮点数,而不是从整数来回转换。

于 2013-05-30T19:11:34.520 回答