天天看點

Flex4學習筆記之一

最近公司平台在內建工作流時需要設計一個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。