转自:http://blog.csdn.net/holly_puck/article/details/6690264
最近公司平台在集成工作流时需要设计一个web版的流程定义设计器,初步定下来用Flex技术实现view层。
故而学了一下Flex,把一开始犯的错误记录下来与大家共勉。
1.由于ActionScript3语言与java的极为相似,故而在未深入了解as3语言时按照java语法写了几个as类,
结果弄出错来。现在稍微总结一下:
1) as3语言的类的构造函数只能有一个,这一点不像java可以有多个重载的构造函数。
2) as3语言在类的定义中关于私有属性的getter 和setter和java的不同。
java的一般情况下是这样的:public void setXxxx(String str){...};public String getXxxx(){...};
而as3则是像这样定义:public function set xxxx(str:String):void {...};public function get xxxx():String{...};
2.为了体验下flex的绚丽,我在网上下载了一个模板。在FlexBuilder新建了个项目,导入组件。却发现很多文件,包括mxml文件和as文件
都报错。在网上找了下原因,大致是因为这些组件都是基于Flex4版本之前写的,有很多类或组件在4中不被支持,或者干脆删掉了。
比如:我copy了一段在“ComboBox的下拉菜单List内显示不同字体的功能”代码,FlashBuilder提示报错“无法将<s:SimpleText>解析为组件执行”
到网上寻求答案,有这么一句话:simpleText has been replaced with label in beta 2。原来在beta2版本中simleText已经被label替代了。
之后我又从网上下载了个自定义播放器组件,照着里面的代码敲了一遍,发现错误许多。
从网上整理了一下
对CustomPlayer.mxml 的修改:
1. 查找 Adobe Flex 4.1 语言参考 ,spark.primitives.VideoElement 类已经去掉。所以组件<s:VideoElement>无法被解析为组件执行。
2. <mx:HSlider 在程序使用了 Wireframe 主题后,不能显示控制拖动的小圆点。这个只需用回默认的Spark主题即可。
3. 将 xmlns:mx="library://ns.adobe.com/flex/halo" 改为 xmlns:mx="library://ns.adobe.com/flex/mx"
否则 <mx:HSlider 、<mx:Label 会提示出错。(因为正式版的命运空间有改变,详见:http://adamed.javaeye.com/blog/623395 Flex4正式版命名空间的变化 一文)
4. 将valueInterval 改成 snapInterval
5. 我在类中引用com.rojored.view.controls.*,再在类中使用Audio,它报Access of undefined porperty Audio
需要从网上下载2个文件http://rojored.googlecode.com/hg ... d/controls/Audio.as
http://rojored.googlecode.com/hg ... asses/AudioEvent.as
或者http://mvn.rojored.com/com/rojor ... 10222.232444-20.swc
相关api地址http://docs.rojored.com/
对CustomPlayerSample.mxml 的修改:
1.<s:List 中的 selectionChanged="play(event);" 提示“无法为组件类型spark.components.List解析属性selectionChanged”,将其改为change。