2013-03-16 70 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