我正在尝试让秒表开始并在记录Kinect的位置时停止:
//process x and y coordinates
public void calculateJoints(Skeleton skeleton)
{
Joint rightHand = skeleton.Joints[JointType.HandRight];
Joint leftHand = skeleton.Joints[JointType.HandRight];
rightX = rightHand.Position.X;
rightY = rightHand.Position.Y;
}
//start the stopwatch (tried to use a greater time between positions 1 and 5 vs 1 and 2
public void processJointsAndRepeat(Skeleton skeleton)
{
startTime();
while (numPositions < 5)
{
calculateJoints(skeleton);
numPositions++;
}
stopTime();
double tempTime = calculateTimeElapsed();
}
//calculate time in milliseconds
private double calculateTimeElapsed()
{
long milliseconds = stopWatch.ElapsedMilliseconds;
return (double)milliseconds;
}
但是每当我尝试将x,y和time值作为键放入时,它会为重复键引发错误。当我检索tempTime的值时,它只显示0.
这是我的代码问题,还是我需要更精确的秒表?
我意识到获得30 fps的时间很难,所以如果你有任何其他的建议,那就太好了!我基本上只是想计算点之间的平均速度来调整音频文件的播放速度。谢谢!
答案 0 :(得分:1)
秒表是在常规Windows机器上使用高分辨率的计时器包装。使用Stopwatch.ElapsedTicks和Stopwatch.Frequency,您可以使用较少花哨的功能来获得比MS分辨率更高的效果。
请注意,您的问题可能与计时器无关,而是与您未展示的其他一些代码有关...