2013-05-14 27 views
0

我得到了一些代碼:Flex的預警數據綁定將無法檢測到的任務「佈局」

... 
<fx:Declarations> 
<s:Animate id="toRight" target="{cp.layout}"> 
<s:SimpleMotionPath property="horizontalScrollPosition"          valueFrom="{cp.layout.horizontalScrollPosition}" valueTo="{cp.layout.horizontalScrollPosition+42}"/> 
      </s:Animate> 
</fx:Declarations> 
.... 
.... 
<s:List id="cp" horizontalScrollPolicy="off" itemRenderer="com.mRenderer" horizontalCenter="1" verticalCenter="1" change="changeEvt(event)" borderAlpha="0" width="458" height="65" initialize="initList();" > 

.....

我使用動畫與箭頭平滑移動我的名單。

但我得到了一些警告:

數據綁定將無法檢測到的任務「佈局」。

我知道佈局不能在列表中綁定。但它不是自定義類。我怎樣才能防止呢?

+0

很簡單我只放置2箭頭-按鈕和使用動畫來平滑在該列表中滾動(我需要緩和用於滾動) 。一切正常。但我需要刪除該警告。 – user2381360 2013-05-15 09:24:05

回答

1

所以你使用Animate效果來動畫布局對象的horizontalScrollPosition?我認爲這是正常工作。

您得到的警告是由此大括號綁定表達式觸發的:target="{cp.layout}"。警告告訴您List控件不會發送任何綁定事件,如果它的layout屬性發生更改。因此,如果您應用中的某些內容更改列表的佈局,您的動畫效果將停止工作。

這只是一個警告,只要你不希望改變佈局,你的代碼應該工作得很好。

如果你想使警告消失了,你有三種選擇:

  • 更新您的編譯器設置,以便不會被生成此警告(壞主意)
  • 而不是使用屬性不能綁定到大括號表達式中,請使用返回不可綁定屬性的函數調用。
  • 使用「creationComplete」事件處理程序target屬性

實施例分配動畫的在結合表達式中使用的函數的:

<s:Animate target="{getAnimationTarget()}" /> 

private function getAnimationTarget():Object 
{ 
    return cp.layout; 
} 

儘管可以會出現同樣的問題(如果列表的佈局發生變化,則列表中沒有任何事件將被分派來更新綁定),上面的語法應該可以防止生成警告。當花括號表達式包含函數調用時,Flex編譯器不會在設計時生成此警告。使用List的「creationComplete」事件的

實施例:

<s: List creationComplete="myFunction() /> 

private myFunction() 
{ 
    toRight.target = cp.layout; 
} 
+0

我嘗試在寫入時使用函數調用。警告消失,但動畫不起作用。任何想法爲什麼? – user2381360 2013-05-15 08:35:41

+0

@ user2381360它可能是一個計時問題。在函數中,檢查cp.layout是否爲空。或者您可以使用List上的creationComplete事件處理程序進行分配:''和'private myFunction(){toRight.target = cp.layout;}' – 2013-05-15 19:47:19

+0

yes.Its timingComplete事件工作正常。 – user2381360 2013-05-16 14:18:55

相關問題