0

float から変換された 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」を 3 番目のパラメーターとして使用すると、CafBar.Position.X と CafBar.Position.Y が浮動小数点数であり、30 の整数が明確に割り当てられている場合、整数に変換する必要があるという 2 つのエラーが発生することです。そして10?次に、3 番目のパラメーターを削除すると、エラーが消えます。

これを修正する方法や回避する方法を知っている人はいますか?

4

4 に答える 4

1

(int)valueint に変換する必要(float)valueがある場合と、float に変換する必要がある場合に配置する必要があります。

于 2013-05-30T19:10:36.873 に答える
1

Vector2 の唯一のホールド フロート。30 と 10 は整数ですが、Vector2 コンストラクターはそれらを暗黙的に float にキャストします。Rectangle には 4 つの整数引数があるため、それぞれが整数でなければなりません。http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.rectangle.aspxを参照してください。

于 2013-05-30T19:05:50.367 に答える
1

Vector2 コンストラクター明らかに 2 つの float をパラメーターとして受け取るため、渡すものは int ではなく float として解釈されます。

XフィールドとYフィールドも見てみると、どちらも明らかにフロートです。

RTFM、男。それはあなたの友達です。int との間で相互に変換するのではなく、このコンテキストで float を操作するようにコードを変更する必要があります。

于 2013-05-30T19:11:34.520 に答える
1

CafBar.Position.XCafBar.Position.Yfloat であり、これらの値は両方とも int にキャストできることがわかっています

そう、

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