零基礎(chǔ)的 PhotoShop CEP 6 開發(fā)教程 「 7 」UI - 保持持久運(yùn)行與界面顏色

《零基礎(chǔ)的 PhotoShop CEP 6 開發(fā)教程》系列目錄

「 0 」目錄
「 1 」配置開發(fā)環(huán)境
「 2 」CEP 文件結(jié)構(gòu)
「 3 」CEP 的運(yùn)行機(jī)制
「 4 」Hello World !
「 5 」事件(EVENTS)
「 6 」調(diào)用 JSX 并傳遞信息
「 7 」UI - HTML 開發(fā)的一些細(xì)節(jié)
「 8 」API - 文件讀寫與二進(jìn)制數(shù)據(jù)
「 9 」簽名打包與 ZXPSignCmd
「 X 」CEP 更新到 6.1版了


前面的文章已經(jīng)介紹了很多 CEP 的基礎(chǔ)概念和方法,接下了會(huì)說一些關(guān)于 UI 的事情,首先要說的就是 CEP 擴(kuò)展面板的運(yùn)行問題。

保持持久運(yùn)行

CEP 擴(kuò)展面板默認(rèn)是不會(huì)持久運(yùn)行的,也就是說只要面板被隱藏?cái)U(kuò)展就會(huì)被關(guān)閉,面板再打開就會(huì)重新載入擴(kuò)展,相當(dāng)于瀏覽網(wǎng)頁時(shí),把網(wǎng)頁最小化就會(huì)重載網(wǎng)頁一樣,這往往是我們不想要的,所以我們這時(shí)就需要把我們的擴(kuò)展持久化,讓它被隱藏時(shí)只是不顯示而已,不會(huì)重新載入。

重新展開面板會(huì)導(dǎo)致重新載入面板失去所有狀態(tài)

讓我們的擴(kuò)展保持持久運(yùn)行,需要發(fā)送一個(gè) com.adobe.PhotoshopPersistent 事件,告訴宿主我們的擴(kuò)展需要持久化運(yùn)行:

      var cs= new CSInterface();  

      var event = new CSEvent();//創(chuàng)建一個(gè)事件
      event.type = "com.adobe.PhotoshopPersistent"; //注冊(cè)持久化運(yùn)行事件
      event.scope = "APPLICATION";
      event.extensionId = cs.getExtensionID(); // 我們的擴(kuò)展 ID
      cs.dispatchEvent(event); //發(fā)送事件讓宿主持久化運(yùn)行我們的擴(kuò)展

界面顏色

我們都知道,PhotoShop 可以設(shè)置界面外觀的顏色,而我們的擴(kuò)展是網(wǎng)頁,它不能自動(dòng)隨著界面顏色改變而改變自己的顏色,這需要我們通過 JavaScript 取得 PhotoShop 界面顏色,另外還有捕捉界面顏色改變的事件,讓 PhotoShop 界面顏色改變時(shí)我們的擴(kuò)展也能跟著改變顏色。

PhotoShop 的界面顏色

獲得界面顏色信息

通過訪問 getHostEnvironment()方法獲取宿主的信息對(duì)象,其中有一個(gè)子對(duì)象 .appSkinInfo 包含了宿主的界面外觀信息:

  var cs = new CSInterface(); 

  var skIinInfo = cs.getHostEnvironment().appSkinInfo; 

  skIinInfo.panelBackgroundColor.color.red // 面板背景色 RGBA 值: R
  skIinInfo.panelBackgroundColor.color.green // 面板背景色 RGBA 值: G
  skIinInfo.panelBackgroundColor.color.blue // 面板背景色 RGBA 值: B
  skIinInfo.panelBackgroundColor.color.alpha // 面板背景色 RGBA 值: A (透明度)

對(duì)象 內(nèi)容
panelBackgroundColor 面板背景顏色
appBarBackgroundColor 應(yīng)用工具條背景色
panelBackgroundColorSRGB 面板背景顏色 在 sRGB 色彩空間的值
appBarBackgroundColorSRGB 應(yīng)用工具條背景色 在 sRGB 色彩空間的值
baseFontFamily 界面字體類型
baseFontSize 界面字體尺寸

界面顏色改變事件

通過捕捉 Type 為 "com.adobe.csxs.events.ThemeColorChanged" 的事件就可以捕獲界面顏色改變了,同時(shí) CSInterface 有一個(gè)常量:CSInterface.THEME_COLOR_CHANGED_EVENT ,它們的作用是一樣的,要注意的是這個(gè)事件不會(huì)向回調(diào)函數(shù)傳遞任何信息。


    var cs = new CSInterface(); 
    cs.addEventListener(CSInterface.THEME_COLOR_CHANGED_EVENT, tChanged);

    function tChanged(event)
    {
       var cs = new CSInterface() ;
       var skIinInfo = cs.getHostEnvironment().appSkinInfo;
    }


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容