国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

深入分析Flex[Bindable]及使用方法

開發 后端
Flex有很多值得學習的地方,本文向大家介紹一下Flex[Bindable]的概念及使用方法,Flex[Bindable]大概又是Flex用得最多的元數據了。

在學習Flex的過程中,你可能會遇到Flex[Bindable]方面的問題,這里和大家分享一下,希望本文的介紹能讓你有所收獲。

深入分析Flex[Bindable]及使用方法

◆Flex[Bindable]大概又是Flex用得最多的元數據了。剛開始用用確實好簡單,效率真是沒的說。不過這幾天用著卻碰到了些問題,我自己搜集了些資料,想著有必要在blog里總結一下吧。
啥是元數據(metadata)

今天不曉得為什么livedoc.adobe.com這么慢,沒辦法,拿不到權威的解釋了。我就按自己的理解隨便解釋一下:首先要明白元數據不是語法的一部分,而是專門給編譯器用的,說白了是告訴編譯器做某些事情,學過java之類的應該知道。那Bindable來講,它的作用是告訴flex編譯器,給某些某些東西建立綁定關系,flex編譯器會在編譯過程中給AS(flex編譯器就是把mxml編譯成as,再編譯到swf,也可能直接編譯倒swf,我這里假設有as這么個環節)加一點事件發生和處理之類的代碼,由此綁定的關系便建立了,如果我們用純粹as3代碼來寫也是可以實現的,就是太太太麻煩。

舉個例子:給下面的public變量加上Flex[Bindable]

 

  1. Flex[Bindable]  
  2. publicvarname:String=""

◆作為一個public變量,肯定既可以被賦值,也能賦值給別的變量。綁定的作用就是,當name改變的時候(被賦值了),可能通知其它被name影響(賦值給它們)的變量發生改變。這里的“可能”就需要編譯器來判斷,這就是為什么元數據是給編譯器用的原因了。在mxml里用{}的語法的地方就是綁定的對象,比如label={xxx.name},當name變化,label也跟著變化。這樣,我們只是很簡單的改變了name的值,由于有綁定,界面上的label也跟著自動變化了,爽吧。
能用在哪里

三個地方:類,變量,getter/setter。是不是public沒有關系,private的就只能給自家用唄。用在Class上就是簡單的給所有的public屬性(包括變量,getter/setter,普通方法)加上Flex[Bindable],可是一般的方法不能用Flex[Bindable]呀,于是一般就能看到flex給了個warning,直接無視:)。變量嘛就是上面講的,很簡單略掉。
用在只讀,只寫屬性(getter/setter)上面

終于講到關鍵地方了,因為getter和setter很像方法,用起來會有點不同。看看這個例子: 

  1. Flex[Bindable]  
  2. privatevarcontent:Array=newArray();  
  3. Flex[Bindable]  
  4. publicfunctionset_content(ct:String):void  
  5. {  
  6. content=ct.split(SEP);  
  7. }  
  8. Flex[Bindable]  
  9. publicfunctionget_wholeText():String  
  10. {  
  11. if(content.length==0)  
  12. {  
  13. return"";  
  14. }  
  15. else  
  16. {  
  17. var_w:String="";  
  18. for(vari:int=0;i<content.length;i++)  
  19. {  
  20. _w+=content[i]+"\r\n";  
  21. }  
  22. return_w;  
  23. }  
  24. }  
  25.  

 ◆原來的設想是content綁定_wholeText,可它是不工作的。為什么?_wholeText太復雜了,被編譯器排除在“可能”之外,編譯器認為沒有綁定關系,如果只是簡單的returncontent,倒是可以的。我這里搜到了一些比較權威的解釋。來自http://www.rubenswieringa.com/blog/binding-read-only-accessors-in-flex找到ElyGreenfield講的。

  1. Nowkeepinmindthatthere’snowayforthecompilertoactuallytellifthevalueofapropertygetfunctionwouldbedifferentifcalled,  
  2. shortofdoinganextensivecodeflowanalysisofthegetfunction,  
  3. identifyingalltheinputsthatmightbeaffectingthevalueofthegetfunction  
  4. (i.e.,memberfields,statics,globalsthatareusedinthegetfunctionandinanymethods,globalfunctions,closures,etc)itmightcall,
  5. andsettingupwatchersoneveryoneofthosetotriggerthebindingwhenanyofthemchange.  
  6. That’sprohibitivelydifficult,andexpensivetodo.Sothecompilerdoesn’ttry.  
  7.  
  8. InsteadwhenyouputFlex[Bindable]onaget/setproperty,  
  9.  
  10. thecompilermakesitbindablewithalittlecreativerewritingthatallowstheframeworktowatchthegetfunction,  
  11. anddispatchachangeeventwhenthegetfunctionistriggered.Thismeansthatautomaticbindablepropertiesdon’  
  12. tworkwhenthegetfunctioniscomputedfrommultiplevalues,  
  13. orwhenyouchangeitsvaluebysettingabackingfield,ratherthanusingthesetfunction.  
  14.  
  15. It_also_meansthatifyouhavenosetfunction,  
  16.  
  17. wecanprettymuchguaranteethatthere’snowayautomaticallybindablegetpropertieswillbetriggered.areadonlypropeertyis,  
  18. tothecompiler,completelyopaque…atthemoment,ithasnoideawherethatvalueiscomingfrom,  
  19. andhencewillneverbeableto‘automatically’triggerthebinding.  

說白了就是為了降低復雜度和提高效率,復雜情況的getter會被忽略。如何解決?可以手動建立綁定,即[Bindable("eventName")]。把代碼改成這樣:

  1. Flex[Bindable]  
  2. privatevarcontent:Array=newArray();  
  3. Flex[Bindable]  
  4. publicfunctionset_content(ct:String):void  
  5. {  
  6. content=ct.split(SEP);  
  7. this.dispatchEvent(newEvent("_contectChanged"));  
  8. }  
  9. [Bindable("_contectChanged")]  
  10. publicfunctionget_wholeText():String  
  11. {  
  12. if(content.length==0)  
  13. {  
  14. return"";  
  15. }  
  16. else  
  17. {  
  18. var_w:String="";  
  19. for(vari:int=0;i<content.length;i++)  
  20. {  
  21. _w+=content[i]+"\r\n";  
  22. }  
  23. return_w;  
  24. }  
  25. }  
  26.  

 這樣就避免了編譯器去自動識別。自己加上綁定關系,當_content被賦值,發出_contentChanged事件,通知所有被綁定的getter方法執行一遍。這也說明了,綁定不過是事件游戲而已,flex為用戶隱藏了很多底層算法。

【編輯推薦】

  1. Flex頁面跳轉實現的幾種方式
  2. FlexBuilder4十大新特性閃亮登場
  3. Flex框架中Cairngorm和Mate的優點大比拼
  4. FlexBuilder3.0與Eclipse3.4的完美結合
  5. 解析Flex應用開發步驟 新特性和技術框架 
責任編輯:佚名 來源: 163.com
相關推薦

2010-09-07 14:21:22

PPPoE協議

2022-04-12 08:30:45

TomcatWeb 應用Servlet

2011-03-23 11:01:55

LAMP 架構

2009-09-09 09:26:00

2010-03-08 14:53:48

Linux分區

2011-09-01 13:51:52

JavaScript

2023-02-01 08:13:30

Redis內存碎片

2025-09-16 10:57:31

2009-12-14 14:50:46

Ruby傳參數

2009-06-10 18:12:38

Equinox動態化OSGi動態化

2022-08-30 07:00:18

執行引擎Hotspot虛擬機

2021-10-29 16:36:53

AMSAndroidActivityMan

2009-12-16 16:39:01

Visual Stud

2010-01-26 09:31:31

千兆接入交換機

2010-01-05 15:32:48

交換機技術

2009-12-22 15:39:36

IPPBX技術

2017-08-18 14:01:44

大數據dataWrangle

2009-12-08 18:02:06

PHP final關鍵

2023-08-07 07:44:44

2013-11-14 17:02:41

Android多窗口
點贊
收藏

51CTO技術棧公眾號

日韩麻豆第一页| 亚洲欧美成人综合| 91精品久久| 午夜影院在线观看视频| 中文字幕福利片| 日本福利视频| 四虎在线免费看| 超碰免费公开在线| 日韩成人伦理| 肉色欧美久久久久久久免费看| h片在线观看| 日韩一区二区三免费高清在线观看| 六月婷婷综合| 亚洲国产一区二区久久| 国产成人精品福利| 欧美国产偷国产精品三区| 欧美日韩国产一区精品一区| 视频在线观看91| 国产成人a级片| 国产精品嫩草影院av蜜臀| 欧美国产欧美综合| 欧美日韩精品一区二区三区蜜桃| 亚洲人成在线观看网站高清| 欧美成人精品一区二区三区| 国产精品丝袜久久久久久高清| 一本一本久久a久久精品综合妖精| 樱花在线免费观看| 国产在线视频欧美一区| 精品国产中文字幕第一页| 成人天堂资源www在线| 日韩三级在线观看| 91久久综合亚洲鲁鲁五月天| 久久综合伊人77777麻豆最新章节| 2019中文字幕在线电影免费| 亚洲精品女人| 午夜电影网亚洲视频| 亚洲人成网站免费播放| 欧美日韩精品一区| 中文有码在线观看| 色综合一区二区日本韩国亚洲| 欧美自拍偷拍| 激情欧美一区二区三区在线观看| 亚洲精品免费在线播放| 精品一区二区亚洲| 91九色视频在线| 亚洲成人精品电影在线观看| 一级在线视频| 亚洲伦理久久| 国产亚洲激情| 亚洲色图在线播放| 国产91免费看片| 欧美精品一区在线| 视频福利在线| 日韩在线欧美| 亚洲一区在线观看视频| 国产成人精品视频| www.com黄色片| 精品视频一区二区三区| 国产成人在线影院| 日韩一区二区三区av| 国产欧美在线一区二区| 婷婷六月天丁香| 精品国产一区二区三区久久久樱花 | 国产欧美丝祙| 亚洲欧美日韩小说| 日韩视频一区在线| 国产爆乳无码一区二区麻豆| 天堂在线中文网官网| 奇米影视在线99精品| 5858s免费视频成人| 精品一区国产| 一二三四视频在线中文| 国产在线一区观看| 欧美年轻男男videosbes| 久久香蕉国产线看观看网| 91av成人在线| 7777精品久久久大香线蕉小说| 欧美日韩在线观看一区| 精品在线不卡| 91极品视频在线观看| 国产经典三级在线| 99热精品在线| 国产视频精品免费播放| 超碰影院在线观看| 黄色录像1级片| 成人精品国产| 国产精品另类一区| 亚洲在线第一页| 在线久久视频| 免费观看成人高潮| 国产成人调教视频在线观看 | 91传媒视频免费| 三级国产在线观看| 粉嫩绯色av一区二区在线观看| 在线视频福利一区| www在线观看黄色| 亚洲欧洲在线观看av| 黄色av免费在线播放| 99久久精品国产毛片| 成人有码在线视频| 成人在线啊v| 日韩欧美电影一区| av丝袜天堂网| 丁香一区二区三区| 蜜桃麻豆91| 国产亚洲字幕| 91精品免费观看| 成年人免费在线视频| 91精品国产黑色紧身裤美女| 久久国产精品高清一区二区三区| 欧美激情在线免费观看| 色综合色综合色综合色综合| 日韩精品水蜜桃| 国产日韩在线看片| 国内黄色精品| 丝袜美腿亚洲一区二区| 国产一区二区av在线| 欧美一区二视频| 久播影院第一理论片| 国产精品综合av一区二区国产馆| 国产精品久久久一区| 久久精品国产福利| 欧美日韩综合一区| 国产精品丝袜久久久久久消防器材| 亚洲永久精品唐人导航网址| 91美女片黄在线观| 成人国产精品免费网站| 一区二区三区国产福利| 少妇精品久久久一区二区三区| 欧美大码xxxx| 在线视频婷婷| 精品日本美女福利在线观看| 男女午夜刺激视频| 99久久综合国产精品| 凹凸成人精品亚洲精品密奴| 日韩电影二区| 男人天堂欧美日韩| 国产乱子轮精品视频| 国产女人aaa级久久久级| 亚洲美女区一区| 欧美日韩夫妻久久| 日韩精品视频观看| 久久久午夜视频| 成人国产在线视频| 亚洲一区二区精品在线| 老太脱裤让老头玩ⅹxxxx| 日日噜噜夜夜狠狠视频| 91九色在线porn| www日韩视频| 国产在线一二| 高清视频在线观看三级| 国语精品视频| 一本一本久久a久久综合精品| 久久九九国产| 中文字幕精品一区二区精品绿巨人| 精品国产成人av| 亚洲精品之草原avav久久| 欧美激情一区二区三区成人 | 精品一区二区在线看| 国产欧美视频一区二区三区| 精品久久久久久中文字幕| 亚洲毛片在线观看| 欧美中在线观看| 91社在线播放| 免费黄色网页| 成人性教育av免费网址| 欧美wwwsss9999| 欧美aaaaa成人免费观看视频| 亚洲视频在线观看一区| 精品无人区太爽高潮在线播放| 国产精品日韩久久久久| 久久久久久久9| 国产在线视频网| 欧美日韩国产成人在线观看| 久久国产精品毛片| 欧美视频在线播放一区| 99精品国产热久久91蜜凸| 国产情侣第一页| 国外成人在线视频| 97夜夜澡人人双人人人喊| 国产欧美123| 在线视频国产福利| 人人鲁人人莫人人爱精品| 国产一区二区精品久| 国产毛片精品一区| 亚洲va欧美va人人爽| 在线观看日韩www视频免费| 国产精品久久久久aaaa九色| 国产免费内射又粗又爽密桃视频| 国产区视频在线观看| av有声小说一区二区三区| 成人av资源电影网站| 久久精品国产精品亚洲精品| 午夜精品免费在线| 亚洲欧美另类人妖| 成人在线播放av| 国产v亚洲v天堂无码久久久| 麻豆免费在线视频| 日韩在线综合| 91最新地址在线播放|