本文目錄一覽:
- 1、autojs腳本實現自動接聽微信、QQ音視頻通話
- 2、autojs死巡環內存爆炸
- 3、求把電腦用的按鍵精靈代碼轉譯為auto.js用的代碼
- 4、auto.js中怎麼循環好?我用百度複製的function auto()過一段時間就熄火了,代碼就是下邊的
autojs腳本實現自動接聽微信、QQ音視頻通話
//在autojs中對腳本設置為一分鐘運行一次。需開啟無障礙里的autojs,在最近任務鎖定autojs並且允許autojs後台自啟動運行(可查詢自己手機怎麼開啟)
//小圖.jpg可以用手機截屏後用手機自帶圖片編輯功能裁切出含“接受”部分的小圖並放下面的目錄下
//鑒於autojs的截圖函數的不穩定性,可以把代碼截的圖用代碼images.save()保存到手機上也用手機自帶圖片編輯功能裁切一張小圖與手機自帶截屏功能截的圖製作的小圖兩者都加入判斷以提高成功率
//這個主要針對網上已有的antoanswer.app在豎屏狀態下運行穩定,卻無法在橫屏時自動接聽而設計。豎屏狀態下建議下載autoanswer.app(注意不同版本的效果不一樣,要找到適合自己手機的版本)
if(!requestScreenCapture()){
toast(“請求截圖失敗”);
exit();
}
//requestScreenCapture(true);
sleep(2000);
var img=captureScreen();
var temp=images.read(“/storage/emulated/0/小圖.jpg”);
var p=findImage(img,temp);
if(p){
click(p.x+temp.getWidth()/2,p.y+temp.getHeight()/2);
}else{
}
autojs死巡環內存爆炸
內存溢出是一種程序運行會出現的錯誤,當程序所需要的內存大於剩餘內存(機器能提供給你的內存),就會拋出內存溢出的錯誤
var obj = {}
for (var i = 0; i 100000000; i++) {
obj[i] = new Array[100000000]
}
登錄後複製
內存泄漏
佔用的內存沒有及時的釋放從而失去控制,從而造成內存的浪費。內存泄漏多了就容易引發內存溢出。
常見的內存泄漏案例:
1、意外的全局變量
function fn() {
var name = ‘張三’
var age = 18
address = ‘上海’ // 沒有用var定義,這時候address是全局的
}
fn() // 因為address會被變量提升到了全局變量,fn調用完成後address還保留在內存中
登錄後複製
2、沒有及時清除定時器
// 沒有及時清理定時器
var timer = setInterval(() = {
console.log(new Date())
}, 1000);
// clearInterval(timer) 及時清理定時器
登錄後複製
3、沒有及時清理閉包
// 函數執行完後, 函數內的局部變量沒有釋放, 佔用內存時間會變長,容易造成內存泄露
function fun() {
var a = 5
function getA() {
return a
}
return getA
}
var f = fun()
f() // 5
// f = null 讓內部函數成為垃圾對象,釋放閉包
登錄後複製
4、沒有及時清理清理dom元素的引用
var dom = document.getElementById(‘box’)
document.body.removeChild(dom) // dom刪除後,下面依然能打印出整個div
console.log(dom) // div id=”box”嘿嘿嘿/div
dom = null
console.log(dom) // 釋放資源,解除引用
登錄後複製
5、addEventListener
監聽事件的解除,監聽的時候addEventListener,在不監聽的時候要使用removeEventListener。
求把電腦用的按鍵精靈代碼轉譯為auto.js用的代碼
主要是Goto 繼續——Rem 繼續 如何轉化和 顏色判斷中的“如果是則執行A,否則執行B”怎麼寫 其他的沒問題了 下面是參考代碼 Rem 繼續 MoveTo 826, 296 Delay 1000 LeftClick 1 Delay 5000 IfColor 928,663,”232352″,2 Then MoveTo 928,663 Delay 3000 LeftClick 1 Else MoveTo 706, 577 LeftClick 1 MoveTo 801, 249 Delay 3000 LeftClick 1 MoveTo 728, 577 Delay 3000 LeftClick 1 MoveTo 614, 447 Delay 3000 LeftClick 1 MoveTo 739, 291 Delay 3000 LeftClick 1 MoveTo 952, 652 Delay 3000 LeftClick 1 End If Delay 120000 For 20 Delay 5000 IfColor 1140,680,”FFFFFF”,0 Then MoveTo 1145, 678 LeftClick 1 Delay 15000 Goto 繼續 Else MoveTo 790, 450 Delay 3000 LeftClick 1 MoveTo 728, 580 Delay 3000 LeftClick 1 End If Next
auto.js中怎麼循環好?我用百度複製的function auto()過一段時間就熄火了,代碼就是下邊的
exit() 執行了。如果我沒猜錯的話,exit裡面有throw語句;或者你裡面的某一個函數報錯了,報錯不是用console.error 而是用了throw語句,或者直接原生報錯。改良一下應該是。
function auto() {
//循環代碼
try {
//請求截圖
if (!requestScreenCapture()) {
toast(“請求截圖失敗”);
exit();
}
//截圖命名為9.png
captureScreen(“/sdcard/9.png”);
sleep(2000)
// 讀取本地圖片/sdcard/1.png
var img = images.read(“/sdcard/9.png”);
// 判斷圖片是否加載成功
if (!img) {
toast(“沒有該圖片”);
exit();
}
// 在該圖片中找色,指定找色區域為在位置(400, 500)的寬為300長為200的區域,指定找色臨界值為4
var point = findColor(img, “#70bdc8”, {
region: [1768, 137, 50, 20],
threshold: 4
});
if (point) {
toast(“找到啦:”);
click(1909, 153)
sleep(7000)
} else {
toast(“沒找到”);
}
} catch (e) {
console.error(e)
} finally {
//多少秒執行一次 上面的參數就填 秒數乘1000 上述 一秒調用一次
setTimeout(auto, 120000);
}
}
auto();
還有sleep應該不起作用,js沒有sleep方法。正確函數應該是
async function auto() {
//循環代碼
try {
//請求截圖
if (!requestScreenCapture()) {
toast(“請求截圖失敗”);
exit();
}
//截圖命名為9.png
captureScreen(“/sdcard/9.png”);
await new Promise(rs={
setTimeout(()={
rs(“ok”)
},2000)
})
// 讀取本地圖片/sdcard/1.png
var img = images.read(“/sdcard/9.png”);
// 判斷圖片是否加載成功
if (!img) {
toast(“沒有該圖片”);
exit();
}
// 在該圖片中找色,指定找色區域為在位置(400, 500)的寬為300長為200的區域,指定找色臨界值為4
var point = findColor(img, “#70bdc8”, {
region: [1768, 137, 50, 20],
threshold: 4
});
if (point) {
toast(“找到啦:”);
click(1909, 153);
await new Promise(rs={
setTimeout(()={
rs(“ok”)
},7000)
})
} else {
toast(“沒找到”);
}
} catch (e) {
console.error(e)
} finally {
//多少秒執行一次 上面的參數就填 秒數乘1000 上述 一秒調用一次
auto();
// setTimeout(auto, 120000);
}
}
auto();
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/252807.html