FlexViewer3.0中Widget打开和关闭特效实现

本文介绍如何在Widget打开和关闭时实现旋转与缩放动画。通过修改WidgetManager.mxml和WidgetTemplate.as文件,设置动画参数,使得Widget在显示时能够顺时针旋转并放大,在隐藏时逆时针旋转并缩小。

实现效果:

Widget打开时,整个Widget一边旋转一边从小变大
Widget关闭时,整个Widget一边旋转一边从大变小

一、打开动画:
(1)WidgetManager.mxml中增加定义
       <fx:Declarations>
                <s:Parallel id="animationShow">
                        <s:Rotate3D angleZFrom="0" angleZTo="720" duration="1000" />
                        <s:Scale3D duration="1000" scaleXFrom="0" scaleXTo="1.0" scaleYFrom="0" scaleYTo="1.0" scaleZFrom="0" scaleZTo="1.0"/>
                </s:Parallel>               
        </fx:Declarations>
(2)WidgetManager.mxml中的openWidget函数
在wgtContainer.addWidget(widget);的后面增加
animationShow.play([widget]);
(3)WidgetManager.mxml中的onRunWidget函数
在wgtContainer.addWidget(widget);的后面增加
animationShow.play([widget]);
做如上修改之后,Widget出场时就是一边顺时针旋转一边放大的效果了

二、关闭动画:
需要修改WidgetTemplate.as文件
(1)导入定义和新增变量
import spark.effects.Rotate3D;
import spark.effects.Scale3D;
import mx.effects.Parallel;
import flash.utils.Timer;
import flash.events.TimerEvent;
private var myParallel:Parallel;
private var myRotate3D:Rotate3D;
private var myScale3D:Scale3D;
(2)修改WidgetTemplate函数
在super();后面增加
myRotate3D = new Rotate3D();               
myRotate3D.angleZFrom = 720;
myRotate3D.angleZTo = 0;
myRotate3D.duration = 1000;
myRotate3D.autoCenterProjection = true;
myRotate3D.autoCenterTransform = true;
               
myScale3D = new Scale3D();
myScale3D.duration = 1000;
myScale3D.autoCenterProjection = true;
myScale3D.autoCenterTransform = true;
myScale3D.scaleXFrom = 1.0;
myScale3D.scaleXTo = 0.0;
myScale3D.scaleYFrom = 1.0;
myScale3D.scaleYTo = 0.0;
myScale3D.scaleZFrom = 1.0;
myScale3D.scaleZTo = 0.0;
               
myParallel = new Parallel();
myParallel.addChild(myRotate3D);
myParallel.addChild(myScale3D);
(3)修改close_clickHandler函数
if (_baseWidget)
{
        //Widget关闭时的动画效果               
        myParallel.play([_baseWidget]);
        //由于异步执行的特点,必须等待动画执行完之后再关闭Widget.此处Timer的1000毫秒与自定义动画的播放时间相关
        var timer:Timer = new Timer(1000, 1);
        timer.addEventListener(TimerEvent.TIMER, function():void{_baseWidget.setState(WIDGET_CLOSED);});
        timer.start();                                   
}
做如上修改之后,Widget退场时就是一边逆时针旋转一边缩小的效果了

(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值