天天看點

【HoorayOS】開源的Web桌面應用架構(檔案夾功能分析)

 下一版本的重要功能就是“檔案夾”,随着應用碼頭的出現,工作列也改成大圖示的模式,桌面可放置圖示的位置越來越少,“檔案夾”就應然而生了,但在制作過程中,發現幾個難點,也就是圖示拖動時需要注意的部分。如下圖,檔案夾内的圖示在拖動結束的時候,位置可能會處在四處:應用碼頭、桌面、目前檔案夾、其他檔案夾

【HoorayOS】開源的Web桌面應用架構(檔案夾功能分析)
【HoorayOS】開源的Web桌面應用架構(檔案夾功能分析)

  然後記錄下每個格子四個角的坐标儲存為數組,然後循環數組依次添加圖示進去。

【HoorayOS】開源的Web桌面應用架構(檔案夾功能分析)

  之後圖示拖動也是需要這個格子數組,當我拖動完畢釋放圖示的時候,判斷滑鼠釋放的位置處于哪個格子中間,進行圖示移動并重新排序,實作圖示拖動功能,應用碼頭拖動也是同樣思路,兩者結合起來無非就是要判斷兩次,先判斷釋放位置是否處于應用碼頭的格子内,然後再判斷是否處于桌面的格子内。

  我在想,檔案夾之間的圖示拖動是否也可以參考這種模式,桌面上所有已打開并處于顯示狀态的檔案夾視窗,當作是一個個的格子,儲存到一個數組裡。因為顯示在桌面的視窗不管在任何情況都是高于桌面的,也就是覆寫在桌面上,是以當拖動結束釋放時,優先判斷圖示是否處于檔案夾的格子内,然後再依次判斷應用碼頭的格子和桌面的格子。

  随之又想到會出現這種情況,就是檔案夾會重疊,如果我圖示拖動的位置剛好處于圖中問号處,系統怎麼知道我先要拖放的位置的哪個視窗呢?

【HoorayOS】開源的Web桌面應用架構(檔案夾功能分析)

  其實細想一下,完全不用擔心。我的檔案夾格子數組可以在圖示拖動的時候建立,建立的時候依次按檔案夾視窗z-index的值從大到小來讀取,這樣就是保證檔案夾格子數組裡記錄内容的順序也是按照檔案夾層級順序來存放的,當我循環數組判斷圖示拖放位置的時候,自然也就避免了剛才那個問題。

  OK,以上就是檔案夾内圖示拖動的大緻思路,希望開發的時候能夠順利些,也能讓第三版順利面世,讓大家用用試試。

    本文轉自胡尐睿丶部落格園部落格,原文連結:http://www.cnblogs.com/hooray/archive/2012/03/23/2414410.html,如需轉載請自行聯系原作者

繼續閱讀