0

パラメータがオブジェクト送信者と RoutedEventsArg e である関数を呼び出そうとしています。この関数に関連するメイン ウィンドウにボタンを作成し、ボタンをクリックすると関数にリンクされるため、これらのパラメータが必要です。

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

別の関数で、上記の関数を呼び出す必要がありますが、この 2 番目の関数には RoutedEventsArg e ではなく、AllFramesReadyArg 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 ツールボックスの一部ではありません。あなたはそれを書いて、それらの2つの引数を与えたようです。それらは必要ありませんし、必ずしも関数が必要なわけでもありません。

また、電話をかけたくありませ。コールバックは、すべてのフレームが処理の準備が整うたびに起動さます (関数名の由来)。これは 1 秒間に約 30 回発生します。一度だけ記録するように指示する必要があります。StartRecordAllFramesReadyAllFramesReady

あなたの他の質問による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 に答える