我正在尝试调用参数为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
}
答案 0 :(得分:3)
您的StartRecord
不属于Kinect工具箱。你似乎写了它并给它这两个参数。它不需要它们,也不一定需要它。
你也不希望在StartRecord
中呼叫AllFramesReady
。 AllFramesReady
回调在每个时间内被触发所有帧都准备好进行处理(因此函数名称),大约每秒发生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;
}