<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          AlloyDesktop桌面應(yīng)用開發(fā)引擎

          聯(lián)合創(chuàng)作 · 2023-09-28 07:01

          AlloyDesktop 是 HTML5 本地 App 開發(fā)引擎,是一個(gè)能將網(wǎng)頁像軟件一樣運(yùn)行在桌面上的app開發(fā)引擎。該引擎實(shí)現(xiàn)了對網(wǎng)頁的透明渲染,使網(wǎng)頁不再局限于瀏覽器的框框。同時(shí),提供強(qiáng)大的api支持,使你能輕松實(shí)現(xiàn)許多傳統(tǒng)網(wǎng)頁實(shí)現(xiàn)不了的功能,諸如窗口控制,文件IO,圖像處理……可以這樣說,一般軟件所能實(shí)現(xiàn)的大部分功能,利用AlloyDesktop開發(fā)的app也能實(shí)現(xiàn),而且實(shí)現(xiàn)起來更快更容易。另外,它還具備傳統(tǒng)軟件所不具備的優(yōu)勢,那就是強(qiáng)大的界面渲染能力。利用html5和css3的新特性,你可以輕輕松松實(shí)現(xiàn)陰影透明等特效。相對于市面上許多軟件界面開發(fā)引擎,網(wǎng)頁開發(fā)的門檻相對來說要低得多,而且是一個(gè)通用的標(biāo)準(zhǔn)。利用該引擎,可以開發(fā)諸如QQ,瀏覽器,播放器,PS等軟件。

          下面簡單講下該引擎的運(yùn)行原理。該引擎運(yùn)行app時(shí),先讀取一個(gè)后綴名為.app的配置文件,再通過讀取配置文件的相關(guān)參數(shù)獲得網(wǎng)頁的地址以及窗口大小等其他相關(guān)的配置。然后啟動一個(gè)透明瀏覽器,加載相應(yīng)的網(wǎng)頁。網(wǎng)頁中可以通過js調(diào)用引擎提供的api,實(shí)現(xiàn)一些本地app的功能,即使用普通瀏覽器瀏覽網(wǎng)頁時(shí)網(wǎng)頁實(shí)現(xiàn)不了的功能。

          該引擎目前還處于beta階段,以下為使用該引擎開發(fā)的app的部分界面的截圖。

          引擎初始界面,放了幾個(gè)demo。


          透明瀏覽器


          音樂widget


          屏幕尺子

          ……

          開發(fā)配置

          其中的透明瀏覽器可用來在開發(fā)階段進(jìn)行調(diào)試。點(diǎn)擊按鈕切換網(wǎng)頁渲染模式,默認(rèn)使用不透明模式渲染。點(diǎn)擊按鈕或按F12或F9可打開開發(fā)者工具,強(qiáng)制刷新。點(diǎn)擊瀏覽器右上角按鈕可生成默認(rèn).app文件,app文件可雙擊直接運(yùn)行app文件為一配置文件,可使用記事本打開,注意不要設(shè)為默認(rèn)打開??墒褂玫呐渲庙?xiàng)如下:

          • url:網(wǎng)頁地址

          • name:程序名字

          • icon:程序圖標(biāo)

          • width:初始化窗口寬度

          • height:初始化窗口高度

          • x:初始化窗口x坐標(biāo)(相對于屏幕)

          • y:初始化窗口y坐標(biāo)(相對于屏幕)

          • enableDrag:是否允許全窗口拖拽,僅對透明窗口有效,1為真,0為假,以下同

          • enableResize:是否允許改變窗口大小

          • disableTransparent:是否禁用透明渲染

          • disableRefresh:禁止按F5刷新

          • disableDevelop:禁止按F12打開開發(fā)者工具

          • hasBorder:是否使用默認(rèn)邊框

          • max:初始化時(shí)是否最大化窗口,如果為真,則忽略width,height,x,y四個(gè)參數(shù)

          • exStyle:高級參數(shù),設(shè)置窗口額外屬性,諸如置頂,去掉任務(wù)欄圖標(biāo)等

          API文檔

          注:以下函數(shù)的最后一個(gè)參數(shù)都為handler,代表窗口句柄,不傳則使用本窗口的句柄,只有在操作其他窗口時(shí)才有作用。請不要在全局變量中使用 handler這個(gè)變量名。以下API都是屬于AlloyDesktop對象的,調(diào)用時(shí)請用AlloyDesktop.xx調(diào)用。

          窗口相關(guān)

          • bringToTop(handler);//窗口移到最頂層

          • browse(url,handler);//在新進(jìn)程中使用默認(rèn)的透明瀏覽器瀏覽網(wǎng)頁,url為網(wǎng)頁路徑

          • close(handler);//關(guān)閉窗口

          • createBrowser(url,handler);//在新進(jìn)程中打開一個(gè)webtop窗口,url為網(wǎng)頁路徑

          • createWindow(url,exStyle,isTransparent,readyHandler,handler)//在當(dāng)前進(jìn)程中創(chuàng)建一個(gè)窗口,并返回窗口句柄,readyHandler為窗口網(wǎng)頁加載后要執(zhí)行的js代碼,此函數(shù)或?qū)U棄

          • createWindowBase(url,exstyle,isTransparent,readyHandler,handler);//同上,區(qū)別在于使用本地相對路徑,此函數(shù)或?qū)U棄

          • drag(handler);//拖拽窗口

          • enableDrag(handler);//允許拖拽窗口,同配置參數(shù)enableDrag=1作用相同。

          • focus(handler);//使窗口獲得焦點(diǎn)

          • getPos(handler);//獲得窗口位置,返回值為一object,格式如下{x:13,y:54}

          • getScreenSize(handler);//獲取屏幕大小,返回值為一object,格式如下{width:130,height:54}

          • getSize(handler);//獲得窗口大小,返回值為一object,格式如下{width:130,height:54}

          • hide(handler);//隱藏窗口

          • loadUrl(url,handler);//加載網(wǎng)頁,url為網(wǎng)頁路徑

          • max(handler);//最大化窗口

          • mini(hander);//最小化窗口

          • move(x,y,handler);//移動窗口

          • ready(handler);//只對被創(chuàng)建出來的窗口有用,執(zhí)行父窗口闖過來的js代碼readyHandler

          • reload(handler);//重新加載當(dāng)前頁面

          • reloadIgnoreCache(handler);//重新加載當(dāng)前頁面并忽略緩存

          • restore(handler);//還原窗口,對應(yīng)于hide函數(shù)

          • runApp(appName,param,handler);//運(yùn)行一個(gè)app,appName為.app文件路徑,param為參數(shù),會帶 在url上,格式如param=xxx,在app中可通過獲取當(dāng)前網(wǎng)頁url從中提取出該參數(shù)。此函數(shù)不太穩(wěn)定,請盡量使用runAppEx。

          • runAppEx(appName,param,handler);//也是運(yùn)行一個(gè)app,同runApp的區(qū)別是會新起一個(gè)進(jìn)程運(yùn)行app

          • setSize(w,h,handler);//w為窗口寬度,h為窗口高度

          • setTitle(title,handler);//設(shè)置窗口標(biāo)題

          • setTopMost(handler);//窗口置頂,此函數(shù)跟bringToTop的區(qū)別在于此函數(shù)會使窗口永遠(yuǎn)置頂,除非有另外一個(gè)窗口調(diào)用了置頂函數(shù)

          • setWindowStyle(exStyle,handler);//高級函數(shù),設(shè)置窗口額外屬性,諸如置頂之類。

          • showDev(handler);//打開開發(fā)者工具

          • stopDrag(handler);//停止窗口拖拽

          圖像相關(guān)

          • saveImageFromBase64(s,path,handler);//s為base64字符串,可通過canvas的toDataURL函數(shù)生成,path為保存路徑,可以使用相對路徑,即相對主網(wǎng)頁文件的路徑,以下同

          • saveImageFromStream(id,width,height,path,handler);//id為二進(jìn)制流id,下面會講到如何創(chuàng)建二進(jìn)制流,width為圖像寬度,height為圖像高度,path為圖像保存路徑

          • toImage(path,handler);//把當(dāng)前網(wǎng)頁存為一張圖片,支持透明,path為圖像保存路徑

          • toImageEx(path,x,y,width,height,handler);//把當(dāng)前網(wǎng)頁的某一矩形區(qū)域存為圖像,x和y為左上角坐標(biāo),width和height為寬度跟高度,ptah為圖像保存路徑

          系統(tǒng)相關(guān)

          • setTaskIcon(id,path,title,handler);//設(shè)置一托盤圖標(biāo),id自己指定,確保不重復(fù)即可,path為圖標(biāo)文件所在路徑,暫時(shí)只支持本地圖標(biāo),title為鼠標(biāo)移到圖標(biāo)上所要顯示的文字

          • delTaskIcon(id,handler);//刪除一托盤圖標(biāo),id為創(chuàng)建圖標(biāo)時(shí)使用的id

          • findFiles(path,flag,handler);//查找文件,path為文件路徑,支持通配符,flag為true則查找子目錄, 返回格式為一數(shù)組,格式如下”["1.txt","AmfStream.cpp","AmfStream.h", {"name":"base","list":["2.txt"]}],其中name為目錄名,list為目錄下的文件

          • getCurrentDirectory(handler);//獲取當(dāng)前app文件所在目錄

          • getFolder(handler);//打開“選擇文件夾”對話框,返回值為文件夾路徑

          • getFileSize(filename,handler);//獲得文件大小,filename為文件路徑,返回值為文件所占字節(jié)數(shù)

          • getOpenName(filename,handler);//打開“打開文件”對話框,filename為對話框中要顯示的默認(rèn)名字,返回值為文件路徑

          • getOpenNames(filename,handler);//打開“打開文件”對話框,支持多選,filename為對話框中要顯示的默認(rèn)名字,返回值為一個(gè)數(shù)組,數(shù)組頭一個(gè)元素為文件夾路徑,剩余的元素為選擇的各個(gè)文件名字。

          • getSaveName(filename,handler);//打開“保存文件”對話框,filename為對話框中要顯示的默認(rèn)名字

          • download(url,filename);//下載一文件,url為網(wǎng)址,filename為要保存的文件路徑

          • readFile(path,handler);//讀取一文本文件的所有內(nèi)容,返回值為文件內(nèi)容的字符串

          • writeFile(path,s,handler);//寫一文本文件,s為要寫入的字符串

          • logOff(flag,handler);//注銷windows系統(tǒng),flag為true表示強(qiáng)制執(zhí)行,以下同

          • reboot(flag,handler);//重啟系統(tǒng)

          • quit(handler);//退出當(dāng)前進(jìn)程

          • shutdown(flag,handler);//關(guān)閉系統(tǒng)

          • createMemory(name,filename,size,handler);//創(chuàng)建一共享內(nèi)存塊,供二進(jìn)制流讀寫使用,name為內(nèi) 存塊命名,不同進(jìn)程可通過此名字進(jìn)行共享內(nèi)存操作,filename文件路徑,如果不為空,則建立一磁盤文件,所有二進(jìn)制操作將會寫入此文件中,為空的話 則不創(chuàng)建文件,所有的二進(jìn)制流只在內(nèi)存中進(jìn)行,size為文件大小,返回值為代表內(nèi)存塊的id

          • createStream(id,handler);//創(chuàng)建一二進(jìn)制文件流,id為調(diào)用createMemory函數(shù)創(chuàng)建內(nèi)存塊的返回值,返回值為代表二進(jìn)制流的id

          • deleteMemory(id,handler);//釋放一內(nèi)存塊,id為createMemory函數(shù)的返回值。使用createMemory之后要記得調(diào)用此函數(shù)釋放內(nèi)存,否則會造成內(nèi)存泄漏。

          • deleteStream(id,handler);//釋放一二進(jìn)制流,id為createStream函數(shù)的返回值。使用createStream之后要記得調(diào)用此函數(shù)釋放內(nèi)存,否則會造成內(nèi)存泄漏。

          • getSharePos(handler);//獲取默認(rèn)共享內(nèi)存塊的二進(jìn)制流讀寫指針位置。注:此內(nèi)存塊為所有進(jìn)程共享,默認(rèn)創(chuàng)建的

          • setSharePos(i);設(shè)置共享內(nèi)存塊的二進(jìn)制流讀寫指針位置

          • getStreamPos(id,handler);//獲取一二進(jìn)制流的讀寫指針位置,id為二進(jìn)制流id,單位為字節(jié),id為二進(jìn)制流id,不傳則使用上面提到的默認(rèn)的共享內(nèi)存的二進(jìn)制流,以下同

          • setStreamPos(pos,id,handler);//設(shè)置一二進(jìn)制流讀寫指針的位置,單位為字節(jié)

          • readByte(id,handler);//讀取一字節(jié)

          • readBytes(l,id,handler);//讀取連續(xù)內(nèi)存塊,l為內(nèi)存塊的長度,返回一二進(jìn)制數(shù)組

          • readInt(id,handler);//寫入一占四位字節(jié)的整數(shù)

          • readGB(l,id,handler);//讀取固定長度的GB2312編碼的字符串,l為字符串長度,注意一個(gè)漢字的長度為2

          • readString(l,id,handler);//讀取固定長度使用utf-8編碼的字符串,l為字符串長度,以下同,注意一個(gè)漢字的長度為3

          • readStringEx(l,id,handler);//讀取固定長度的字符串,對應(yīng)于writeStringEx。

          • readWString(l,id,handler);//讀取固定長度的寬字符串,一個(gè)寬字符占兩個(gè)字節(jié),無論英文或是中文,但是傳遞長度的參數(shù)時(shí)無需乘以2,只需傳字?jǐn)?shù)即可

          • readWStringEx(l,id,handler);//讀取固定長度的寬字符串,對應(yīng)于writeWStringEx

          • writeByte(b,id,handler);//向一二進(jìn)制流寫入一字節(jié),b為要寫入的數(shù)字

          • writeBytes(arr,id,handler);//向二進(jìn)制流寫入固定長度的連續(xù)字節(jié),arr為存儲要寫進(jìn)去的數(shù)據(jù)的數(shù)組

          • writeInt(i,id,handler);//讀寫一占四字節(jié)的整數(shù)

          • writeString(s,id,handler);//寫入一字符串

          • writeStringEx(s,id,handler);//寫入一字符串,與writeString不同的是此函數(shù)會在字符串前面寫入三個(gè)字節(jié),標(biāo)明字符串的長度。

          • writeWString(s,id,handler);//寫入一寬字符串

          • writeWStringEx(s,id,handler);//寫入一寬字符串,與writeWString不同的是此函數(shù)會在字符串前面寫入三個(gè)字節(jié),標(biāo)明字符串的長度。

          P2P相關(guān)

          • connect(ip,uid,handler);//連接到服務(wù)器,ip為服務(wù)器地址,uid為用戶名,服務(wù)器在內(nèi)網(wǎng)則使用內(nèi)網(wǎng)地址,在外網(wǎng)就使用外網(wǎng)地址

          • getIPAndPort;//獲取當(dāng)前webtop窗口所使用的ip和端口號,返回值為一object,結(jié)構(gòu)如下:{ip:’192.169.0.102′,port:65345}

          • getUsers(handler);//獲取所有用戶列表,該函數(shù)不會同步返回用戶列表,調(diào)用后請監(jiān)聽webtopP2PUpdateUserList事件來得到用戶列表,下面關(guān)于自定義事件部分會詳細(xì)談到。

          • connectByHost(hostName,uid,handler);//連接到服務(wù)器,hostName為服務(wù)器名稱,可以為局域網(wǎng)機(jī)器名字或者域名,uid為用戶名

          • sendMessage(userName,msg,handler);//向一用戶發(fā)送消息,userName為用戶名稱,msg為要發(fā)送的消息

          • sendMsgToIP(ip,port,msg,handler);//向某一ip地址發(fā)送消息,參數(shù)ip為ip地址,port為端口號,msg為要發(fā)送的消息

          • sendMsgToServer(msg,handler);//向server發(fā)送消息

          自定義事件

          webtop中定義了一些自定義事件,如下 注,所有事件的回調(diào)函數(shù)都只有一個(gè)參數(shù)e,代表事件對象,其中e.detail對象為一object,包含事件的相關(guān)信息

          • AlloyDesktopReady事件,webtop對象創(chuàng)建完成之后觸發(fā),有關(guān)webtop的初始化調(diào)用請放在此事件觸發(fā)之后。 監(jiān)聽代碼:addEventListener(“webtopReady”,readyHandler);//其中webtopReady為事件 名,readyHandler為事件的回調(diào)函數(shù)。以下事件的監(jiān)聽方法與此相同。注:對AlloyDesktopReady事件的監(jiān)聽請放在onload之 前。

          • AlloyDesktopWindowResize:webtop窗口改變大小之后觸發(fā),e.detail的結(jié)構(gòu)如下{width:243,heigh:234}。width和height為窗口的寬度和高度

          • AlloyDesktopWindowMove:webtop窗口移動后觸發(fā),e.detail結(jié)構(gòu)如下{x:34,y:43},x和y為窗口的坐標(biāo),相對于屏幕

          • AlloyDesktopDragDrop:當(dāng)拖拽文件到窗口時(shí)觸發(fā),僅在透明渲染模式下有效(因?yàn)樵诖四J较耯tml5的拖拽功能會失效)。 e.detail的結(jié)構(gòu)如下{list:["E:/webtop/1.png","E:/webtop/2.png"]}。list為文件列表,存儲各個(gè) 文件的路徑

          • AlloyDesktopDownload:下載進(jìn)度事件,e.detail的結(jié)構(gòu)如下 {filename:”xx”,count:423,contentLength:234234},filename為文件路徑,count為已下載字節(jié) 數(shù),contentLength為要下載內(nèi)容的字節(jié)數(shù)。

          • AlloyDesktopDownloadComplete,下載完成事件。

          • AlloyDesktopWindowActive:窗口激活時(shí)觸發(fā)

          • AlloyDesktopWindowFocus:窗口獲得焦點(diǎn)時(shí)觸發(fā)

          • AlloyDesktopRefresh://在用戶按下F5時(shí)觸發(fā),僅在配置項(xiàng)disableRefresh=0時(shí)才會觸發(fā)

          • AlloyDesktopShowDev://在用戶按下F12時(shí)觸發(fā),僅在配置項(xiàng)disableDevelop=0時(shí)才會觸發(fā)

          • AlloyDesktopTaskMouse:在托盤圖標(biāo)上進(jìn)行相關(guān)的鼠標(biāo)操作后觸發(fā),e.detail的結(jié)構(gòu)如下{type:34},其中type代表鼠標(biāo)動作的類型,為一整數(shù),在實(shí)際開發(fā)中可通過打log來獲取相關(guān)數(shù)值代表的鼠標(biāo)類型

          • AlloyDesktopWindowClose:webtop窗口被關(guān)閉時(shí)觸發(fā)

          • webtopMouseLeave:鼠標(biāo)離開webtop窗口時(shí)觸發(fā)

          • webtopShowTip:在鼠標(biāo)移到具有title屬性的dom元素上面時(shí)觸發(fā)(webtop沒有實(shí)現(xiàn)默認(rèn)的tips)

          • webtopP2PRecieveMessage:在webtop窗口收到p2p消息時(shí)觸發(fā),e.detail的結(jié)構(gòu)如下: {ip:’192.168.0.102′,port:64656,msg:’sfsdfsfasdf’}。ip為發(fā)送方的ip,port為發(fā)送方的端 口,msg為對方發(fā)送的消息

          • AlloyDesktopP2PInitInfo:調(diào)用connect之后,p2p初始化之后觸發(fā),e.detail的結(jié)構(gòu)如下: {ip:’192.168.0.102′,port:64656}。ip為當(dāng)前webtop窗口使用的ip,port當(dāng)前webtop窗口使用的端口

          • AlloyDesktopP2PUpdateUserList:調(diào)用getUsers函數(shù)之后的回調(diào)事件。e.detail的結(jié)構(gòu)如下 {list: ['192.168.0.102:55654_melody','192.168.0.101:55354_yukin'],ip:’192.168.0.102′ ,port:64656}。其中192.168.0.102為該用戶的ip,55654為該用戶的端口,melody為該用戶的用戶名。ip為當(dāng)前 webtop窗口使用的ip,port當(dāng)前webtop窗口使用的端口


          瀏覽 14
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  AV中文字幕播放 | 五月天啪啪 | 五月天操逼图 | 久久亚洲国产 | 射死你天天日 |