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的整数?然后,当我删除第三个参数时,错误消失。
任何人都知道如何解决这个问题或解决它?
答案 0 :(得分:1)
Vector2只保留浮动。 30和10是整数,但Vector2构造函数隐含地将它们转换为浮点数。矩形有4个整数参数,因此每个参数必须是整数。见http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.rectangle.aspx
答案 1 :(得分:1)
CafBar.Position.X
和CafBar.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个浮点数作为参数,因此您传递的内容将被解释为浮点数,而不是整数。
RTFM,伙计。这是你的朋友。您应该在此上下文中更改代码以使用浮点数,而不是从整数来回转换。