2012-05-03 61 views
0

我還是有疑惑的驗證,並在Flex組件的失效。任何人都可以簡單比較一下驗證可以做什麼,哪些驗證無效,反之亦然。柔性驗證無效(組件生命週期)

我真的很感激您的任何幫助。

謝謝。

+1

[Flex中用戶界面組件的生命週期(http://stackoverflow.com/questions/6357543/ui-component-life-cycle-in-flex)或[有效化和無效撓曲](HTTP的可能重複: //www.stackoverflow.com/questions/3103014/validation-and-invalidation-in-flex) –

+0

在你感到困惑之前,你做了什麼來研究這個話題?如果您進行一些搜索,則有大量文檔,博客文章,演示文稿和有關此主題的示例。您如何打開一些Flex框架代碼,放入斷點並弄清楚。 – JeffryHouser

回答

1

雖然我不同意上司的評價,這是相當有據可查的,我認爲你只是缺少「無效」和「驗證」方法之間的總體關係。基本上,只要您撥打電話無效出頭,無論是顯示列表,大小或屬性,那麼所有你做的是告訴它設置一個布爾標誌爲那些之一(任何時間修改,將修改屬性當設置寬度被調用時,它們中的任何一個都會調用適當的無效方法,如invalidateProperties)。當下一個輸入幀/渲染髮生時,它將檢查標誌,如果其中任何一個設置爲無效,則調用相應的驗證方法(updateDisplayList,commitProperties,measure)。

要在FB/Eclipse中查看自己的代碼,請按Ctrl + Shift + T並拉起UIComponent,一旦打開UIComponent.as並按下Ctrl + O,然後鍵入validateNow,就可以看到方法體是1行,一個很好的ASDoc評論解釋了它的功能。更好的是,你會看到它在ILayoutManager上調用validateClient,彈出打開LayoutManager(再次按Ctrl + Shift + T)查看validateClient,它基本上解釋了我在這裏所做的。

我認爲這是你來自的地方,因爲我也曾經在那艘船上,不理解更新屬性和它影響它的兄弟姐妹/父母/孩子之間的關係,但它是減少處理負載的關鍵,因爲屬性可以在幀刷新之間多次修改,並且不需要重新計算它周圍的所有內容,直到實際重繪爲止。

問題是,有時您想要修改屬性並立即(即在下一行執行)能夠看到它的副作用如何修改佈局的其他部分,在這種情況下,您可以調用validateNow( )修改屬性後強制它立即更新所有這些,即使它可能發生多次重繪之前發生。這通常不是一個好的做法,因爲它通常意味着不期望的CPU時間被浪費,但有時它是最簡單的選擇。

+0

真棒回覆。謝謝。 – TrexTroy

+0

沒問題,我很高興我正確地點了點。如果我說明了任何錯誤信息,任何人都可以隨時告訴我,但我儘可能地儘量回覆我的答案。 – shaunhusain