flex 彈出乙個能拖動的canvas!

2022-03-13 02:41:00 字數 1345 閱讀 4714

在flex裡,如果我們需要彈出乙個視窗,經常選擇的彈出元件是titlewindow。

可是這個titlewindow的樣式過於呆板了,看久了難免會視覺疲勞,所以我寧願彈出的乙個自定義的canvas。彈出乙個canvas是很容易的事情,只要把popupmanager.createpopup()方法的第二個引數改成你要彈出的元件類名就可以了。可是要做出乙個功能齊全的彈出視窗還需要的解決幾個問題:1,關閉按鈕 2能夠拖動。如果還想有的話,還可以有最大化和最小化按鈕,彈出效果等。

關閉按鈕的問題很好解決,只要加個能點選的東西(比如button),在點選的時候呼叫popupmanager的removepopup()方法即可。 

能夠像titlewindow一樣能夠在視窗裡自由拖動它該如何實現呢?

我想在sdk的titlewindow的源**裡應該有答案。先開啟幫助文件,瀏覽一下titlewindow的屬性和方法。我找到了ispopup屬性和startdragging和stopdragging方法 ,哈哈,我想就是它們了。ispopup是uicomponent的屬性,startdragging和stopdragging方法是繼承自panel的。所以開啟panel的原始檔吧!

(panel的原始檔在這裡:d:\program files\adobe\flex builder 3\sdks\3.3.0.4852\frameworks\projects\framework\src\mx\containers,其中d:\program files\adobe\flex builder 3是你flex builder的安裝路徑)

開啟panel.as,搜尋startdragging這個關鍵字 ,然後順著這個函式找下去你就會找到使titlepanel能夠拖動的函式了。嘻嘻。

下面就是能夠使titlewindow(它繼承自panel)能夠拖動的思路:

當點選標題欄時,觸發了mousedown事件,在事件處理函式(titlebar_mousedownhandler)裡呼叫startdragging方法,在startdragging裡又加了三個監聽函式,監聽滑鼠活動,當滑鼠移動時(systemmanager_mousemovehandler)移動元件,滑鼠離開時stropdragging。 

照著這個思路你可以自己寫**,也可以直接把這部分考到你的自定一元件裡去。

下面是我自定義的基於canvas的彈出元件:

下面是這個元件的源**:/files/orchid/codesource.rar

與大家共同學習吧! 

乙個可拖動的ScrollView

我們經常看到這樣的效果,乙個listview和gridview亦或者是recycleview,再上拉或下拉到頂部的時候,還能再拖拽一段距離,這種效果是是非常常見的,因為用的比較多,所以記錄一下.實現思路是自定義乙個scrollview 具體 如下 package fenganoschina.feng...

模擬乙個盒子的拖動效果

博主的前端入門知識是在慕課網學的,當時有個demo,就是在網頁模擬乙個qq面板的拖動效果 如圖,用兩個div代替。效果是拖動中間的div,整個div跟著移動 今天來總結記錄一下。思路是當滑鼠按下時,開始計算元素距離螢幕左邊緣和上邊緣的距離,並同步賦予元素。這裡的關鍵點是對於js中元素與根元素 或者指...

點選乙個按鈕,彈出乙個視窗

在calculator視窗的button1按鈕執行呼叫乙個mycalc類的視窗。void ccalculatordlg onbnclickedbutton1 幾個函式 1.getdlgitem dlg 對話窗,乙個控制項。根據乙個對話窗或乙個控制項的id,返回乙個指向這個對話窗或控制項的物件的指標。...