0

我正在尝试调用一个函数,其参数是 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
    }
4

1 回答 1

3

StartRecord不是 Kinect 工具箱的一部分。您似乎已经编写了它并给出了这两个论点。它不需要它们,您也不一定需要该功能。

你也不想被打StartRecord进来AllFramesReady每次AllFramesReady所有帧准备好处理时都会触发回调(因此是函数名称),大约每秒发生 30 次。你只需要告诉它记录一次。

根据您的另一个问题,StartRecord是对按钮的回调——不应在代码中调用它。当用户点击相关按钮时调用它。

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

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;
}
于 2012-12-05T15:53:41.807 回答