按下按钮后执行此代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using xnaWindow.FormUI;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace xnaWindow.MathClass
{
public class Math_Vector
{
private Vector3 vectorA;
private Vector3 vectorB;
private Vector3 vectorR;
private List<float> vResult;
VertexPositionColor[] verts1,verts2,verts3;
public void calculate(List<float>v1,List<float>v2)
{
Console.WriteLine("calculating..");
vResult = new List<float>();
vectorA = new Vector3(v1.ElementAt(0), v1.ElementAt(1), v1.ElementAt(2));
vectorB = new Vector3(v2.ElementAt(0), v2.ElementAt(1), v2.ElementAt(2));
//this is the manual calculation of vector addition
float xRes = v1.ElementAt(0) + v2.ElementAt(0);
float yRes = v1.ElementAt(1) + v2.ElementAt(1);
float zRes = v1.ElementAt(2) + v2.ElementAt(2);
vectorR = new Vector3(xRes,yRes,zRes);
//vectorR = vectorA + vectorB;
verts1 = new VertexPositionColor[2];
verts1[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
verts1[1] = new VertexPositionColor(vectorA, Color.Black);
verts2 = new VertexPositionColor[2];
verts2[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
verts2[1] = new VertexPositionColor(vectorB, Color.Black);
verts3 = new VertexPositionColor[2];
verts3[0] = new VertexPositionColor(new Vector3(0, 0, 0), Color.Black);
verts3[1] = new VertexPositionColor(vectorR, Color.Black);
int i = 0;
//this is for console debug
foreach (float va in v1)
{
Console.WriteLine("adding " + va.ToString() + v2.ElementAt(i).ToString());
vResult.Add(va+v2.ElementAt(i));
i++;
}
}
public Vector3 getV1(){return vectorA;}
public Vector3 getV2(){return vectorB;}
public Vector3 getV3(){return vectorR;}
public VertexPositionColor[] getVertex1( )
{
return verts1;
}
public VertexPositionColor[] getVertex2()
{
return verts2;
}
public VertexPositionColor[] getVertex3()
{
return verts3;
}
}
}
奇怪的是,verts1,vertes2,verts3在退出函数后总是变为空。
所以我执行后调用的getters方法总是返回null。
我该怎么办?
这是我对吸气剂的呼唤
math.calculate(v1, v2);
verts1 = math.getVertex1();
verts2 = math.getVertex2();
verts3 = math.getVertex3();
答案 0 :(得分:1)
如果我不得不猜测我很确定你使用的是结构而不是类。而且很可能你只是处理结构实例,就像对类忘记它们是按值复制一样。因此,您可能会在某个地方获得未初始化的内容(您看到的内容为“NULL”)。
答案 1 :(得分:0)
在form_ui中有一些方法可以将一些控件添加到列表&lt;&gt;中。 我已经放置了从容器中删除列表内容的代码。但它仍然没有删除内部。 !!!!!!!!!!!!!!! XDXP
所以我必须在列表中放置clear()。然后里面的一切都消失了。
现在问题已经消失。