flex系列文章1:flex漫谈

本文回顾了作者作为Macromedia Flex早期用户的经历,分享了使用Flex 1.5及后续版本开发过程中遇到的问题及其解决方案。尽管Flex存在不支持鼠标双击事件、FlashSession与HttpSession不同步等局限性,但通过巧妙的设计仍能充分发挥其优势。

若干年前,我还在CitiBank工作的时候,全球包括国内IT界就有很多WEB开发者热论Rich Internet思想,众多IT媒体纷纷把RIA当作一个时髦的词汇挂在嘴边,时不时地品评一番。而各网络技术供应商也在暗地里思考着是不是新的机会到来了。当时正是全球java企业级技术开发高速发展的时期,OpenSource运动也在如火如荼的进行着。有一天,头召集我们说Macromedia(当时还没有被Adobe兼并)已经实现了一个实验版本的解决方案,名字叫Flex,让我们关注一下云云,因为下一个项目要用到它。于是从那时起便开始了Flex之旅了。我想我们是Macromedia Flex最早的客户。Flex1.5精彩的UI组件给我留下了深深的印象. 一直到现在都密切的关注着它的发展,用它实现过很多让很多人激动人心的功能,同时也经历着由于Flex先天的不足所带来的困惑,以及每个困惑后面的解决方案。从第一个Beta版本的脆弱到现在2.0的进步,我能明显地感觉到它在成长和发展。我个人也在成长和发展。想以一个过来人的视角告诉国内这些被Flex地魅力所打动地人们一些经验和教训。以及怎么发挥Flex最强悍的地方,巧妙地避开它相对不稳定和脆弱的地方。只要注意足够的细节,我的实践和经验告诉我,Flex总能让人激动人心!

现在,我想首先随便举例介绍一些Flex的短处。从最早的版本1.5开始。

1 不支持鼠标双击事件(解决方案是用两次时间间隔100毫秒的单击事件来模拟),2.0有所改观。

2 Flex的FlashSession和IE的标准HttpSession在Tomcat,WebLogic上部署时没有问题,但是在Unix的JRUN上时,Post请求参数不同步(解决方案是在Remote Object实现中手动同步必要的参数,比如如果你把Spring中的Facade Object作为Remote Object)2.0有同样的问题。在WebService作为Server端的通信方式时没有类似问题。

3  前期绑定和官方声称的不一致。组件绑定在Flex中分为前期绑定和后期绑定。当Client端装载编译过的mxml或as码流时首先出发的事件是Initialize然后是CreationComplete,当我们分别写两个handler相应这两个事件,如果后期绑定可能用到前期绑定时装载的数据,你就会发现数据有可能会没有转载。原因有若干,在下一篇文章中详细介绍。

4 FlashPlayer 9以前的实现,类层次结构太深,实现很机械死板,存在很多重构的可能,比如一个应用中包括若干容器和组件,每个组件的初始化都要调flash类根结点相同的构造器。你配置好Flex自带的Profiler,就可以在Console中看到整个应用在底层的对象创建初始化的所有过程。只要在flex-config.xml中打开开关然后再做些额外的配置就可以了。(解决方案是写一个底层flash类Singleton的类工厂cache所有底层flash类,此方案非常见效,flex并不是想象中的那么慢!)

5 本身没有好的pattern可以直接利用,容易造成mxml和as混在一起,可以选择cairngorm,这个不错。我将单独写一篇关于CAIRNGORM架构的文章。不过2.0时已经被集成进来。

6 CellRender存在数据类型DataType不匹配的Bug等等。

以上说了这些,有些朋友可能有些失望,其实大可不必。我们要保持一种客观的态度,等我把Flex的优点列出来以后,你又会充满信心了,其实,任何产品都有优势和劣势。另外,以上我所列的东西都是我在实际的开发中碰到的,到后来你会发现,等你做完项目必须的优化动作后,反而是数据传输所消耗的时间比Flex组件初始化的时间要长一些,那时可以采用在Server端做个Cache以及Client端Lazy Load的策略。想一下Flex都可以做全球各大股票市场行情实时显示和分析,还有什么它不可以做的呢! 

Flex技术专栏 --by mervyn_lee

内容概要:本文介绍了一个基于MATLAB实现的多目标粒子群优化算法(MOPSO)在无人机三维路径规划中的应用。该代码实现了完整的路径规划流程,包括模拟数据生成、障碍物随机生成、MOPSO优化求解、帕累托前沿分析、最优路径选择、代理模型训练以及丰富的可视化功能。系统支持用户通过GUI界面设置参数,如粒子数量、迭代次数、路径节点数等,并能一键运行完成路径规划与评估。代码采用模块化设计,包含详细的注释,同时提供了简洁版本,便于理解和二次开发。此外,系统还引入了代理模型(surrogate model)进行性能预测,并通过多种图表对结果进行全面评估。 适合人群:具备一定MATLAB编程基础的科研人员、自动化/控制/航空航天等相关专业的研究生或高年级本科生,以及从事无人机路径规划、智能优化算法研究的工程技术人员。 使用场景及目标:①用于教学演示多目标优化算法(如MOPSO)的基本原理与实现方法;②为无人机三维路径规划提供可复现的仿真平台;③支持对不同参数配置下的路径长度、飞行时间、能耗与安全风险之间的权衡进行分析;④可用于进一步扩展研究,如融合动态环境、多无人机协同等场景。 其他说明:该资源包含两份代码(详细注释版与简洁版),运行结果可通过图形界面直观展示,包括Pareto前沿、收敛曲线、风险热图、路径雷达图等,有助于深入理解优化过程与结果特性。建议使用者结合实际需求调整参数,并利用提供的模型导出功能将最优路径应用于真实系统。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值