轉自:http://blog.csdn.net/holly_puck/article/details/6690264java
最近公司平臺在集成工做流時須要設計一個web版的流程定義設計器,初步定下來用Flex技術實現view層。
故而學了一下Flex,把一開始犯的錯誤記錄下來與你們共勉。web
1.因爲ActionScript3語言與java的極爲類似,故而在未深刻了解as3語言時按照java語法寫了幾個as類,
結果弄出錯來。如今稍微總結一下:
1) as3語言的類的構造函數只能有一個,這一點不像java能夠有多個重載的構造函數。
2) as3語言在類的定義中關於私有屬性的getter 和setter和java的不一樣。api
java的通常狀況下是這樣的:public void setXxxx(String str){...};public String getXxxx(){...};
而as3則是像這樣定義:public function set xxxx(str:String):void {...};public function get xxxx():String{...};ide
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。flex