2013-03-16 66 views
2

我正在使用winform开发基于VS2012的Kinect应用程序。在我尝试了几种方法之后,我仍然无法将价值从一个班级传递给另一个班级。无法在类之间传递数据

基本上我有三类,一个公众MainWindow(),公共部分FaceTrackingViewer(),和公共SkeletonFaceTracker()。最后一节课是FaceTrackingViewer()课。

在SkeletonFaceTracker(),我有以下几点:

public bool lastFaceTrackSucceeded { get; set; } 

internal void OnFrameReady(KinectSensor kinectSensor, ColorImageFormat colorImageFormat, byte[] colorImage, DepthImageFormat depthImageFormat, short[] depthImage, Skeleton skeletonOfInterest) 
{ 
    // something else 
    if (this.faceTracker != null) 
    { 
     this.lastFaceTrackSucceeded = frame.TrackSuccessful; //where it's set to be true. 
     //something else 
    } 
} 

我也试图改变到第一行:

public bool lastFaceTrackSucceeded; 

public bool LastFaceTrackSucceeded 
{ 
    get { return lastFaceTrackSucceeded; } 
    private set { lastFaceTrackSucceeded = value; } 
} 

我认为两者是相同的,但。

在主窗口(),我有:

public partial class MainWindow : Window 
{ 
    //some other irrelevant code snippets 

    private FaceTrackingViewer.SkeletonFaceTracker skeletonFaceTracker = new FaceTrackingViewer.SkeletonFaceTracker(); 

    private void button_faceOnly_Click(object sender, RoutedEventArgs e) 
    { 
     bool faceTrackSucceeded = skeletonFaceTracker.lastFaceTrackSucceeded; 
     // if I use the second structure in SkeletonFaceTracker(), it should be: 
     // bool faceTrackSucceeded = skeletonFaceTracker.LastFaceTrackSucceeded; 

     if (faceTrackSucceeded == true) 
     { 
      //do something 
     } 
    } 
} 

然而,bool faceTrackSucceeded总是false,即使在SkeletonFaceTracker()lastFaceTrackSucceededLastFaceTrackSucceededtrue。我很困惑,不知道哪里出了问题。

请注意,所有视频处理和脸部追踪操作都发生在FaceTrackingViewer()类中。我只是想将一些参数和结构传递给MainWindow()

谢谢

+0

你确定只有一个'SkeletonFaceTracker'被实例化吗?您不显示字段设置为true的位置。 – YotaXP 2013-03-16 15:51:46

+0

是的,它在SkeletonFaceTracker()类中设置为true,但我没有在帖子中显示它。然后让我修改它。 – Shiyu 2013-03-16 15:57:31

+0

YotaXP询问'SkeletonFaceTracker'的实例是否在'MainWindow'中被设置为true。在'MainWindow'中创建的'skeletonFaceTracker'是实际使用的吗? – JLRishe 2013-03-16 16:06:04

回答

0

一两件事第一 - 我认为你可以将这个变量lastFaceTrackSucceeded公共纯粹是出于测试目的。在您的示例中,定义属性的两种方法在功能上是相同的。

我能想到的唯一的其他事情是,您将LastFaceTrackSucceeded设置为不同的实例SkeletonFaceTracker。你没有提供足够的代码让我确定这一点,但如果你有两个(或更多)实例,那么很容易让它们混淆起来。

+0

我添加了片段,我设置了lastFaceTrackSucceeded true,即在函数内部void OnFrameReady中。谢谢。 – Shiyu 2013-03-16 16:05:05

+0

事实上,正如你指出的那样,我检查了SkeletonFaceTracker类,这是一个愚蠢的错误。谢谢你。 – Shiyu 2013-03-16 19:59:16