日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Auto.js】使用Pro 8.0 API优化图色或无障碍的耗电问题

發布時間:2024/8/26 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Auto.js】使用Pro 8.0 API优化图色或无障碍的耗电问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于Auto.js目前的API都是同步的,要在屏幕中搜索某張圖色或者某個控件時,必須無限循環查找,這實際上非常耗電。由于Rhino的限制,Auto.js無法直接提供異步API,這讓Auto.js的腳本天生有一些缺陷。

為了解決這些問題,Auto.js Pro 8.0.0-3引入了兩個新的API,來盡量減少圖色模塊和控件模塊使用時的耗電。

圖色模塊的耗電優化

requestScreenCapture(options)

  • options?{Object}
    • async?{Boolean} 是否以異步事件的形式提供截圖
    • width?{Number} 截圖寬度
    • height?{Number}} 截圖高度
    • orientation?{String} 屏幕方向,"landscape"為橫屏,"portrai"為豎屏,"auto"為自動

請求截圖權限的參數中,增加了async的參數,這個參數運行我們以異步的方式,來獲取屏幕截圖。在以前,我們通過captureScreen()函數來獲取截圖,并無限循環地尋找目標圖片,比如:

// 請求截圖權限 requestScreenCapture(); // 讀取目標圖片 let target = $images.read("./test.png"); while (true) {// 獲取屏幕截圖let capture = $images.captureScreen();// 找圖let pos = $images.findImage(capture, target);// 打印console.log(pos); }

而使用async參數后,我們可以在"screen_capture"事件中獲取到圖片,例如:

// 請求截圖權限, 注意參數 async: true requestScreenCapture({async: true}); // 監聽屏幕截圖 $images.on("screen_capture", capture => {// 找圖let pos = $images.findImage(capture, target);// 打印console.log(pos); });

使用這樣的方式,我們可以只在屏幕刷新時通過事件screen_capture喚醒代碼,獲取到最新的屏幕截圖,并尋找目標圖片。

實測在普通軟件界面的找圖中,CPU使用率減少了75%左右。

無障礙功能的耗電優化

與找圖找色類似,在以前,Auto.js也一直只能通過無限循環去判斷當前界面、尋找控件,這實際上對省電優化十分不友好。在Pro 8.0.0-3版本,我們引入了監聽無障礙事件的API。

auto.registerEvents(events)

  • events?{Array} 要監聽的事件數組
  • 返回 {EventEmitter}

auto.registerEvent(event, callback)

  • event?{String} 要監聽的事件
  • callback?{Function} 事件回調
  • 返回 {EventEmitter}

以上兩個函數用于監聽一個或多個無障礙事件。所謂無障礙事件,即(其他軟件)窗口發送變化、控件發送變化時的事件,包括:

  • view_clicked?控件被點擊
  • view_long_clicked?控件被長按點擊
  • view_selected?控件被選中
  • view_focused?控件成為焦點
  • view_text_changed?控件文本改變
  • view_scrolled?控件被滑動
  • window_state_changed?窗口狀態變化
  • window_content_changed?窗口內容變化
  • window_changed?屏幕上顯示窗口的變化(增加,刪除,子窗口變化等)
  • notification_state_changed?通知狀態變化

例如,我們要監聽Auto.js的打開,可以用以下代碼監聽:

// 監聽窗口變化 auto.registerEvent('windows_changed', e => {// 判斷是否有新窗口打開if (e.windowChanges.indexOf('add') >= 0) {// 獲取新窗口的idlet wid = e.windowId;// 遍歷窗口,獲取新窗口let window = auto.windows.filter(w => w.id == wid);// 判斷新窗口是Auto.jsif (window.length >= 0 && window[0].title == 'Auto.js') {toast("Auto.js被打開了!");}} });

?

總結

以上是生活随笔為你收集整理的【Auto.js】使用Pro 8.0 API优化图色或无障碍的耗电问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。