RoutedEventArgs和AllFramesEventArgs

时间:2012-12-05 09:35:16

标签: kinect eventargs routedeventargs

我正在尝试调用参数为object sender和RoutedEventsArg e的函数。我需要这些参数,因为我在主窗口上创建了一个与此功能相关的按钮,当我点击按钮时它会链接到我的功能。

 protected void StartRecord(object sender,RoutedEventsArg e)
{
  // some stuff that creates a button and then does stuff
}

在另一个函数中,我需要调用上面描述的上述函数,但是第二个函数的参数是AllFramesReadyArg e,而不是RoutedEventsArg e。那么我该如何调出第一个函数

    void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e)
    {
            this.StartRecord(sender, e);
        // does not work since parameter calls for RoutedEventArgs
    }

1 个答案:

答案 0 :(得分:3)

您的StartRecord不属于Kinect工具箱。你似乎写了它并给它这两个参数。它不需要它们,也不一定需要它。

你也希望在StartRecord中呼叫AllFramesReadyAllFramesReady回调在每个时间内被触发所有帧都准备好进行处理(因此函数名称),大约每秒发生30次。你只需告诉它记录一次。

根据您的其他问题,StartRecord是对按钮的回调 - 不应该在代码中调用它。当用户点击相关按钮时调用它。

只需查看Kinect Toolbox代码和回调,您的代码应如下所示:

KinectRecorder _recorder;
File _outStream;
bool _isRecording = false;

private void KinectSetup()
{
    // set up the Kinect here

    _recorder = new KinectRecorder(KinectRecordOptions.Skeleton, _outStream);

    // some other stuff to setup
}

private void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e)
{
    SkeletonFrame skeleton;

    if (_isRecording && skeleton != null)
    {
        _recorder.Record(skeleton);
    }
}

public void StartRecord(object sender, RoutedEventsArg e)
{
    _isRecording = !_isRecording;
}