自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解Flex控件拖動(dòng)技術(shù)

開發(fā) 后端
本文向大家介紹一下Flex控件拖動(dòng)概念,在程序中如果想實(shí)現(xiàn)Flex控件拖動(dòng)一般的實(shí)現(xiàn)思路應(yīng)該是監(jiān)聽鼠標(biāo)的按下事件、鼠標(biāo)的移動(dòng)事件以及鼠標(biāo)釋放事件。

本文和大家重點(diǎn)討論一下Flex控件拖動(dòng),在程序中如果想實(shí)現(xiàn)Flex控件拖動(dòng)一般的實(shí)現(xiàn)思路應(yīng)該是監(jiān)聽鼠標(biāo)的按下事件、鼠標(biāo)的移動(dòng)事件以及鼠標(biāo)釋放事件。

Flex控件拖動(dòng)

在程序中如果想實(shí)現(xiàn)Flex控件拖動(dòng)一般的實(shí)現(xiàn)思路應(yīng)該是監(jiān)聽鼠標(biāo)的按下事件、鼠標(biāo)的移動(dòng)事件以及鼠標(biāo)釋放事件。在mousedown的時(shí)候做一個(gè) flag,表示鼠標(biāo)已經(jīng)按下,并且保存鼠標(biāo)按下時(shí)的坐標(biāo)。然后再mousemove的時(shí)候判斷flag是否是鼠標(biāo)按下狀態(tài),得到鼠標(biāo)的偏移量根據(jù)移動(dòng)的偏 移量調(diào)節(jié)控件的位置。最后在mouseup事件中將flag還原。

在Flex中這一切變得非常簡(jiǎn)單,因?yàn)镕lex在Sprite類中定義了兩個(gè)函數(shù)startDrag()和stopDrag()。大家可能對(duì)Sprite 類不太熟悉。的確直接用到這個(gè)類的時(shí)候確實(shí)不多,但是我們對(duì)這個(gè)類的子類應(yīng)該是非常熟悉的UIComponent。哈哈,看到重量級(jí)的了吧。 UIComponent類可是所有可視控件的鼻祖,也就是說我們能看到的所有的控件都是Sprite的子類。也就意味著所有的可視控件都擁有 startDrag()和stopDrag()這兩個(gè)函數(shù)。

這時(shí)候大家要問了,說了這個(gè)么半天這兩個(gè)函數(shù)有什么特殊之處呢?這和瘋狂有什么聯(lián)系呢?接下來我來說是這個(gè)兩個(gè)瘋狂的函數(shù)。首先說startDrag,官 方文檔上是這樣描述的:“讓使用者拖動(dòng)制定的Sprite,拖動(dòng)狀態(tài)會(huì)一直保持,直到明確的調(diào)用stopDrag函數(shù)或者另外一個(gè)Sprite開始拖動(dòng)。

 同一個(gè)時(shí)間內(nèi)只能有一個(gè)Sprite處于拖動(dòng)狀態(tài)”。也就是說如果想實(shí)現(xiàn)某個(gè)Flex控件拖動(dòng),直接調(diào)用startDrag函數(shù)就可以了,結(jié)束拖動(dòng)就調(diào)用 stopDrag函數(shù)。最原始的控件拖動(dòng)思想在Flex中再無用武之地了。然后再簡(jiǎn)單提一下stopDarg函數(shù),因?yàn)閯偛旁诮榻BstartDrag函數(shù) 中已經(jīng)提到這個(gè)函數(shù)的作用了,所以直接把官方說明在說一下:“結(jié)束startDarg函數(shù)。在調(diào)用stopDrag函數(shù)或者另外一個(gè)Sprite被拖動(dòng)之 前Sprite會(huì)保持拖動(dòng)狀態(tài)。同一個(gè)時(shí)間內(nèi)只能有一個(gè)Sprite處于拖動(dòng)狀態(tài)”。

最簡(jiǎn)單的實(shí)現(xiàn)方法,在想要拖動(dòng)的Flex控件的mouseDown事件中調(diào)用startDrag函數(shù),然后再控件的mouseUp事件中調(diào)用stopDrag函數(shù) 就非常輕松的實(shí)現(xiàn)了控件拖動(dòng),僅僅只有兩行代碼。

下面是實(shí)現(xiàn)一個(gè)按鈕拖動(dòng)的例子:

  1. view plaincopy to clipboardprint?  
  2. <?xml version="1.0" encoding="utf-8"?>   
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*">   
  4. <mx:Button id="btn" mouseDown="startMove(event)" mouseUp="stopMove(event)" label="move"/>   
  5. <mx:Script>   
  6. <!--[CDATA[     
  7. private function startMove(event:Event):void     
  8. {     
  9. Sprite(event.target).startDrag();     
  10. }     
  11. private function stopMove(event:Event):void     
  12. {     
  13. Sprite(event.target).stopDrag();     
  14. }     
  15. ]]-->   
  16. </mx:Script>   
  17. </mx:Application>   
  18. <?xml version="1.0" encoding="utf-8"?> 
  19. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*"> 
  20. <mx:Button id="btn" mouseDown="startMove(event)" mouseUp="stopMove(event)" label="move"/> 
  21. <mx:Script> 
  22. <!--[CDATA[  
  23. private function startMove(event:Event):void  
  24. {  
  25. Sprite(event.target).startDrag();  
  26. }  
  27. private function stopMove(event:Event):void  
  28. {  
  29. Sprite(event.target).stopDrag();  
  30. }  
  31. ]]--> 
  32. </mx:Script> 
  33. </mx:Application> 
  34.  

 【編輯推薦】

  1. 五大方法實(shí)現(xiàn)Flex性能優(yōu)化
  2. 技術(shù)分享 添加FLex右鍵菜單的方法
  3. 技術(shù)前沿 看Flex客戶端緩存技術(shù)如何使用
  4. 12個(gè)Flex常用功能代碼再現(xiàn)
  5. 學(xué)習(xí)筆記 Flex國(guó)際化如何支持其他語言

 

 
 

責(zé)任編輯:佚名 來源: javaeye.com
相關(guān)推薦

2010-07-30 09:56:02

Flex控件

2010-08-10 17:13:58

Flex技術(shù)

2010-08-12 09:25:35

Flex控件

2010-07-30 10:13:38

Flex控件

2010-07-30 10:02:40

Flex驗(yàn)證控件

2010-08-02 16:00:55

Flex配置

2010-08-05 09:05:14

Flex Button

2010-08-09 09:09:43

Flex技術(shù)

2009-07-15 11:20:05

MyEclipse F

2010-07-27 14:58:02

Flex ArrayC

2010-08-06 14:13:31

FlexDataGrid分頁控

2010-08-09 13:25:02

FlexSilverlight

2009-06-16 15:25:17

SilverlightJavaFXFlex

2010-08-09 15:41:13

Flex字體

2009-09-01 10:35:59

C# WinForm控

2010-08-12 13:59:37

FlexList控件

2010-07-27 10:19:28

Flex

2010-07-27 14:00:53

Flex ComboB

2010-08-06 15:11:44

Flex界面控件

2010-08-09 09:41:02

Flex3
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)