0

在为 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 值时,以 time 为键,它都会引发重复键的错误。当我检索 tempTime 的值时,它只显示 0。

这是我的代码的问题,还是我需要更精确的秒表?

我意识到花时间玩 30 fps 的东西很困难,所以如果您有任何其他建议,那就太好了!我基本上只是想计算点之间的平均速度来调整音频文件的播放速度。谢谢!

4

1 回答 1

1

秒表是常规 Windows 盒子上分辨率最高的计时器包装器。通过使用Stopwatch.ElapsedTicksStopwatch.Frequency,您可以使用较少花哨的函数来获得比 MS 分辨率更高的分辨率。

请注意,您的问题可能与计时器无关,而是与您未显示的其他代码有关...

于 2013-03-12T00:37:16.387 回答