首页 > 网站 > WEB开发 > 正文

11.5.对指定组件应用局部Transition

2024-04-27 13:52:11
字体:
来源:转载
供稿:网友
11.5.1. 问题
我想应用一部分Transition, Sequence, 或Parallel 对象到某个子组件上。
11.5.2. 解决办法
在过滤函数基础上为每个特效过滤目标直到返回期望的所有子组件数据。
11.5.3. 讨论
正如第11.4节提及的那样EffectTargetFilter 对象过滤只能应用整个sequence 或整个Parallel组合特效。要想为每个特效过滤目标,你必须编写自定义函数返回每个特效的targets 属性数组。因为特效都有自己的targets 而不依赖与Transition 的targets,过滤函数必须遍历组件内的所有子组件, 这需要付出昂贵的代码,有时候好的办法是把被应用的子组件添加到独立的数组中。

这个例子中的过滤函数循环遍历所有子组件,根据传入方法的参数返回组件中包含的所有HBox 或Canvas 对象数组:
+展开
-ActionScript
private function returnArray(state:*):Array
{
var arr:Array = new Array();
var i:int;
if(state == "foo") {
for(i = 0; i<this.numChildren; i++) {
if(getChildAt(i) is HBox) {
arr.push(getChildAt(i));
}
}
else {
for(i = 0; i<this.numChildren; i++) {
if(getChildAt(i) is Canvas) {
arr.push(getChildAt(i));
}
}
}
return arr;
}

下面的代码将调用这个方法:
+展开
-XML
<mx:states>
<mx:State name="closeState"/>
<mx:State name="openState"/>
</mx:states>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表