Kinect:如何使用事件处理程序增加变量?

时间:2014-04-03 13:16:33

标签: c# kinect

我想为Kinect传感器编写 Initializer 类。它收集关节' 10o帧的坐标(只有存在骨架的那些)然后计算平均位置。

这个代码有一个变量frame,每次找到 Skeleton 时它会递增。此代码不起作用,因为EventHandler似乎没有增加变量。

Class Initializer
    int frame = 0;

    public Initializer(KinectSensor sensor)
    {
        sensor.SkeletonFrameReady += InitSkeletonEvent;
        sensor.SkeletonStream.Enable();
        Console.WriteLine(done);
        if (frame == 100)
        {
            sensor.SkeletonFrameReady -= InitSkeletonEvent;
            //.. other code
        }
    }

    private void InitSkeletonEvent(object sender, SkeletonFrameReadyEventArgs e)
    {
     ....
     frame += 1;
     .... 
    }

2 个答案:

答案 0 :(得分:0)

尝试在代码中添加断点以隔离问题。该事件可能没有被提出。

答案 1 :(得分:0)

  

如果我在事件处理程序中打印出变量,它会递增。但是公共初始化方法中的那个保持为0

这是因为if (frame == 100)在事件订阅后立即被调用,它不会等到你的处理程序被调用100次。

尝试将if (frame == 100)移至您的处理程序

private void InitSkeletonEvent(object sender, SkeletonFrameReadyEventArgs e)
{
    ....
    frame += 1;
    .... 
    if (frame == 100)
    {
        // assign 'sensor' to the private field in 'Initializer' method
        sensor.SkeletonFrameReady -= InitSkeletonEvent;
        //.. other code
    }
}