我正在使用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()
的lastFaceTrackSucceeded
或LastFaceTrackSucceeded
是true
。我很困惑,不知道哪裏出了問題。
請注意,所有視頻處理和臉部追蹤操作都發生在FaceTrackingViewer()
類中。我只是想將一些參數和結構傳遞給MainWindow()
。
謝謝
你確定只有一個'SkeletonFaceTracker'被實例化嗎?您不顯示字段設置爲true的位置。 – YotaXP 2013-03-16 15:51:46
是的,它在SkeletonFaceTracker()類中設置爲true,但我沒有在帖子中顯示它。然後讓我修改它。 – Shiyu 2013-03-16 15:57:31
YotaXP詢問'SkeletonFaceTracker'的實例是否在'MainWindow'中被設置爲true。在'MainWindow'中創建的'skeletonFaceTracker'是實際使用的嗎? – JLRishe 2013-03-16 16:06:04