论坛首页 编程语言技术论坛

AIR, 我已经对你彻底失望了.

浏览 49049 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-04-14   最后修改:2010-04-14
vii779 写道
fins 写道
discolt 写道
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}


我觉得 vii779  的意思应该是  "如果能绑定值就好了"
或者说如果支持 color="表达式" (让{...}可以类似 jsp里的 <%=%>) 就好了


确是这个意思,早期的Flex sdk 3.0里面,只有组件的属性能支持数据绑定,组件的样式(此例中Label的color是一个样式)是不支持数据绑定的,sdk 3.2以后样式可以支持数据绑定了。

想申明一下,在这个地方不想讨论如何如何去开发一个组件,相信大家都有一定的组件开发功底。只想列举一下因Flex SDK某些地方的不成熟和一些功能的缺失给开发带来的不方便。

我的例子写的太简单,说的不太详细,有可能误导大家了。举这个例子想阐明以下几个观点

1 Flex SDK 是否做到了可以让一些刚入门的新手很方便的就能写出一个Renderer
2 组件的样式不支持数据绑定,带来了不必要的麻烦。现在已经支持了,也没必要讨论了。
3 一些被奉为开发实践的原则难道就应该这样吗,例如Renderer不要写的太复杂,setStyle要慎用,会带来性能问题。我觉得这是Flex不够完善的一个借口。
4 本例中为了达到Label颜色的动态切换,需要动态更改Label的样式color,这势必会调用setStyle方法,按照某些开发实践原则,setStyle会带来性能问题。您有更好的不损失性能又能达到效果的方案吗,请指出来,但有一个要求,要最简单,至少不要超过我写的例子的那个复杂度,让刚入门的新手都能方便的做到。

希望您能看懂我例子之外所阐述的一些想法,而不仅仅只是陷入对技术实现的一些细节探讨。



关于Render我们在项目中是这样解决类似问题的:
<mx:itemRenderer>
   <mx:Component>
      <mx:VBox horizontalAlign="center" verticalAlign="middle">
    <mx:CheckBox click="data.selected=!data.selected"    selected="{data.selected}"      visible="{!data.buildIn}" />
     </mx:VBox>
</mx:Component>
</mx:itemRenderer>
如果有多种不同情况导致不同的样式显示,就需要写多个不同样式的Text,根据数据决定其是否visible(不 visible的就不会render,因此不会影响性能)。
这样写Render就可以不需要写ActionScript,稍微比你的方式复杂些。你对Adobe提的意见很好,能否写邮件给他们,我以前曾给JSF规范组写过邮件,如果他们觉得有道理,他们会有回应的,否则也会说出为什么不!
0 请登录后投票
   发表时间:2010-04-14  
ltian 写道
vii779 写道
fins 写道
discolt 写道
理解Flex有误啊, 在Flex{...}里是绑定的属性而不是值。

如果你想这样做,组件式开发的思想新增一个对象,颜色value绑定{data}。

color={对象的value}


我觉得 vii779  的意思应该是  "如果能绑定值就好了"
或者说如果支持 color="表达式" (让{...}可以类似 jsp里的 <%=%>) 就好了


确是这个意思,早期的Flex sdk 3.0里面,只有组件的属性能支持数据绑定,组件的样式(此例中Label的color是一个样式)是不支持数据绑定的,sdk 3.2以后样式可以支持数据绑定了。

想申明一下,在这个地方不想讨论如何如何去开发一个组件,相信大家都有一定的组件开发功底。只想列举一下因Flex SDK某些地方的不成熟和一些功能的缺失给开发带来的不方便。

我的例子写的太简单,说的不太详细,有可能误导大家了。举这个例子想阐明以下几个观点

1 Flex SDK 是否做到了可以让一些刚入门的新手很方便的就能写出一个Renderer
2 组件的样式不支持数据绑定,带来了不必要的麻烦。现在已经支持了,也没必要讨论了。
3 一些被奉为开发实践的原则难道就应该这样吗,例如Renderer不要写的太复杂,setStyle要慎用,会带来性能问题。我觉得这是Flex不够完善的一个借口。
4 本例中为了达到Label颜色的动态切换,需要动态更改Label的样式color,这势必会调用setStyle方法,按照某些开发实践原则,setStyle会带来性能问题。您有更好的不损失性能又能达到效果的方案吗,请指出来,但有一个要求,要最简单,至少不要超过我写的例子的那个复杂度,让刚入门的新手都能方便的做到。

希望您能看懂我例子之外所阐述的一些想法,而不仅仅只是陷入对技术实现的一些细节探讨。



关于Render我们在项目中是这样解决类似问题的:
<mx:itemRenderer>
   <mx:Component>
      <mx:VBox horizontalAlign="center" verticalAlign="middle">
    <mx:CheckBox click="data.selected=!data.selected"    selected="{data.selected}"      visible="{!data.buildIn}" />
     </mx:VBox>
</mx:Component>
</mx:itemRenderer>
如果有多种不同情况导致不同的样式显示,就需要写多个不同样式的Text,根据数据决定其是否visible(不 visible的就不会render,因此不会影响性能)。
这样写Render就可以不需要写ActionScript,稍微比你的方式复杂些。你对Adobe提的意见很好,能否写邮件给他们,我以前曾给JSF规范组写过邮件,如果他们觉得有道理,他们会有回应的,否则也会说出为什么不!


实际上,setStyle的性能并没有想象中的那么夸张,性能慢大概是指的sdk3.0。3.2环境下可以通过对样式进行数据绑定来简化Renderer的开发步骤,并没有感觉到慢,至少在我这边的环境下是这样的。我所说的慢,主要集中在组件的创建速度上,组件数量超过一定规模同时创建的时候,就会有停顿感。组件创建完成后,再怎么处理也慢不到哪里去。基本上在处理这类界面的时候,已不在使用Flex的标准组件。说到JSF,有过比较惨痛的使用经历和不太好的用户体验,才转为用Flex来开发,至少在Flex里面,碰到什么问题,用AS3来封装一下还是可以克服过去的,JSF问题太多,封装一个可重用的JSF组件也是一个痛苦的过程...
0 请登录后投票
   发表时间:2010-04-14  
就是一个版面显示几个到几十个货币对,价格在嗖嗖的更新而已。
不过我不是做开发。。。

vii779 写道
hsbcnet 写道
Flex这么慢吗?我公司用他来做UI哦

慢与不慢只是相对而言,取决于你要做什么样的应用以及你的应用的界面复杂程度。如果仅仅是简单的数据呈现和一般的表单提交,就像Flex例子里面的那种界面,速度还是可以接受的。如果界面需要创建大量的UI元素,速度的问题就要好好衡量一下了。

0 请登录后投票
   发表时间:2010-04-15  
前段时间做了做了两个基于AIR 2.0 BETA2 SDK&FLEX SDK 3.2的项目
FLEX AIR确实不适合做效率要求较高的项目
如果是用户体验要求比较另类FLEX当然是开发方的首选
0 请登录后投票
   发表时间:2010-05-02  
哎,我也只能说air的确四不像。air真2
0 请登录后投票
   发表时间:2010-11-02  
杯具,我应该早点看到这个文,我TMD今天还在用AIR倒腾JS,一点不爽,F**K。
0 请登录后投票
   发表时间:2010-11-02  
flex 设计的最经典的应该是 view stack 了。

as 烂的不可救药,幸好及时抛弃了它。
0 请登录后投票
   发表时间:2011-01-13  
从事flex开发快2年了,来说说我对flex的感觉。做简单的MIS系统勉强还可以,但是对于复杂的系统就很艰难了。作为富客户端的技术,flex根本没有做到给用户“富”的感觉。DataGrid等不能直接复制内容,组件本身存在的一些bug,flex sdk变化这么快就是因为bug太多,在我们的开发中遇到过很多问题,flex做企业级开发实在有很多问题。现在平台对flex封装了很多东西,如果完全抛弃flex也很心痛。flex想说爱你不容易呀!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics