RoutedEventArgs и AllFramesEventArgs
Я пытаюсь вызвать функцию, параметры которой являются отправителем объекта и 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 ответ
Ваш StartRecord
не является частью Kinect Toolbox. Вы, кажется, написали это и дали ему эти два аргумента. Он не нуждается в них, и при этом вам не обязательно нужна функция.
Вы также не хотите звонить StartRecord
в AllFramesReady
, AllFramesReady
callback запускается каждый раз, когда все кадры готовы к обработке (отсюда и название функции), что происходит примерно 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;
}