我收到了一些代码:
...
<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();" >
.....
我使用该动画在我的列表中用箭头平滑移动。
但我收到了一些警告:
数据绑定无法检测到“布局”的分配。
我知道List中的布局不可绑定。但它不是自定义类。我该如何防止这种情况?
答案 0 :(得分:1)
所以你使用Animate
效果来动画布局对象的horizontalScrollPosition
?我认为这是正常的。
您获得的警告由此大括号绑定表达式触发:target="{cp.layout}"
。警告告诉您List
控件如果layout
属性发生更改,则不会调度任何绑定事件。因此,如果您的应用中的某些内容更改了列表的布局,则动画效果将停止工作。
这只是一个警告,只要您不希望更改布局,您的代码应该可以正常工作。
如果您想让警告消失,您有三种选择:
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;
}