使用转换后的float创建矩形时的参数问题

时间:2013-05-30 19:01:18

标签: c# parameters xna

尝试使用已从浮点转换的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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

CafBar.Position.XCafBar.Position.Y是浮点数,你知道这些值都可以转换为int

所以,

  CafRectangle = new Rectangle((int)CafBar.Position.X, (int)CafBar.Position.Y, CafLvlRound, CafBar.Size.Height);

答案 2 :(得分:1)

当你需要转换为int时,你应该把(int)value和你需要转换为float的(float)value放在一起。

答案 3 :(得分:1)

Vector2 constructor 明确需要2个浮点数作为参数,因此您传递的内容将被解释为浮点数,而不是整数。

如果您查看XY字段,它们都会明显浮动。

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