2012-08-13 64 views
0

我試圖在圖像上使用shadereffect實現自定義過渡動畫。 我正在使用一個系統來指定緩動Bézier函數graphicaly,並且我在一個名爲Spline的類中處理所有樣條數據。在我的wpf過渡動畫中閃爍

我將時間屬性動畫發送到樣條曲線的靜態方法,以計算緩和的貝塞爾曲線數據。 然後我得到我發送到我的着色器效果的時間屬性 的計算值,但我不能在此轉換上使用beginAnimation,因爲播放動畫的類是非UI的,並且已經從抽象類繼承。

如果我想使用beginAnimation,我必須作出自DependencyObject抽象類繼承使用依賴屬性爲BeginAnimation的參數,但我得到這個錯誤

this.BeginAnimation(TimeProperty,阿尼姆);


「MyClass的」不包含用於BeginAnimation的定義,並沒有擴展方法BeginAnimation接受類型爲「MyClass的」一個弗里斯特參數可以找到(是否缺少using指令或程序集引用)

所有這些依賴/動畫系統不符合我的需求,因爲我不直接在UI上工作,我現在完全卡住了

任何想法?我使用了一個dispatcherTimer來完成這個技巧,但是當動畫完成時,我可以在半秒內看到我的應用程序的背景顏色,然後我的第二個圖像終於出現了,但是我不想要這樣的行爲,因爲它將被銷售...)

回答

0

我最終使用了Storyboard來實現這一點,在我的抽象類上使用了Dependency對象繼承。

即使在非UI對象上使用Sotryboard/dependencyProperty系統並不好(在我看來),它仍然有效。

我有一個故事板到從0指定時間MyClass中的DependencyProperty動畫爲1 在時間上的PropertyChangedCallback,我計算依賴於我的自定義樣我的新時間值緩和功能,然後影響到物業的進展我的着色器。無論如何,感謝您的關注。

0

使用KeyFrame動畫。您可以添加單幀。作爲例子,你可以隱藏每個第二關鍵幀。

+0

我使用工具中的bézier曲線創建了自定義緩動功能,我在這裏設計了我想要的所有緩動功能,並避免用戶打擾數學。 但在我的應用程序中,我無法使用關鍵幀,因爲我使用自定義類型的樣條緩動函數,並且wpf的樣條關鍵幀系統意味着第一個點指向0,0,最後一個指向1,1 – Julien 2012-08-13 13:39:58

+0

,甚至與第二個動畫使用離散動畫關鍵幀動畫化第二個圖像的不透明度以覆蓋第一個圖像,我仍然在動畫停止後彈出圖像 – Julien 2012-08-13 13:43:30