按鍵精靈安卓版讓腳本具有“記憶”功能

大家好,我是公眾號(hào)3分鐘學(xué)堂的郭立員!說(shuō)到記憶這個(gè)詞我們肯定會(huì)想到人本身,一個(gè)人通過(guò)感官獲取到外部信息以后,就會(huì)存儲(chǔ)到大腦當(dāng)中,形成了長(zhǎng)期或者短期記憶。比如看到的、聽(tīng)到的、聞到的、觸碰到的都能存儲(chǔ)到大腦當(dāng)中。

對(duì)于腳本來(lái)說(shuō),就沒(méi)有這么復(fù)雜了,主要就是看到的,包括圖片、文字。那么我們?cè)趺慈ビ洃浺约霸趺刺崛∮洃浭褂?,就是這篇文章要講的主要內(nèi)容了。

我們先來(lái)看看“文字的記憶“,很多軟件都有配置文件,那個(gè)其實(shí)就具有記憶功能,對(duì)于按鍵精靈安卓版來(lái)說(shuō),最簡(jiǎn)單的方式就是通過(guò)文本記錄,常用到的命令就是寫入命令。我們先來(lái)看一段代碼:

dim a="我要記憶的內(nèi)容"

dim path="/sdcard/pictures/1.txt" //"我要存儲(chǔ)的位置是雷電模擬器的共享文件夾當(dāng)中的1.txt這個(gè)文本當(dāng)中"

file.write(path,a)

當(dāng)我運(yùn)行這段代碼之后,在共享文件夾里面會(huì)出現(xiàn)一個(gè)1.txt文本,文本內(nèi)容為"我要記憶的內(nèi)容",這就實(shí)現(xiàn)了“記憶”功能。

對(duì)于記憶來(lái)說(shuō),我們簡(jiǎn)單分成了短期記憶和長(zhǎng)期記憶。

短期記憶是上面代碼中的file.write命令,之所以叫它短期記憶,是因?yàn)橹灰芜\(yùn)行這個(gè)命令,原來(lái)的內(nèi)容就會(huì)被新的內(nèi)容覆蓋,多次運(yùn)行以后,就只保留了最后一次運(yùn)行的內(nèi)容,所以叫它短期記憶。

當(dāng)然不是說(shuō)用了file.write命令就一定是短期記憶,如果每次存儲(chǔ)的文件名不同,它也可以變成長(zhǎng)期記憶。我們看一下代碼:

dim arr=array("我要記憶的內(nèi)容1","我要記憶的內(nèi)容2","我要記憶的內(nèi)容3")

dim path="/sdcard/pictures/" //"我要存儲(chǔ)的位置是雷電模擬器的共享文件夾"

For i = 1 To 3

file.write(path&i&".txt",arr(i-1))

Next

運(yùn)行這段代碼以后,就會(huì)在文件夾里面生成3個(gè)文本,因?yàn)槊植煌?,所以它們不?huì)互相干擾,避免了被覆蓋的可能,從而形成了長(zhǎng)期記憶。

我們?cè)僬f(shuō)一下另外一種長(zhǎng)期記憶,就是在同一個(gè)文本里面插入內(nèi)容,并且保留原始內(nèi)容,常用命令是file.writeline。這個(gè)命令可以執(zhí)行在文本的某一個(gè)行里面添加內(nèi)容,不會(huì)覆蓋掉原來(lái)的內(nèi)容。

我們來(lái)看一下代碼:

dim arr=array("我要記憶的內(nèi)容1","我要記憶的內(nèi)容2","我要記憶的內(nèi)容3")

dim path="/sdcard/pictures/1.txt" //"我要存儲(chǔ)的位置是雷電模擬器的共享文件夾1.txt"

For i = 1 To 3

file.writeline(path,1,arr(i-1))

Next

通過(guò)運(yùn)行代碼我們可以看到1.txt這個(gè)文本里面有3行內(nèi)容(看下圖),就是我們要記錄的內(nèi)容,這個(gè)命令需要特別注意,必須要在運(yùn)行代碼前,文件夾里面一定要有對(duì)應(yīng)的文本文件,命令不會(huì)新建文件,如果沒(méi)有對(duì)應(yīng)的文件,就會(huì)報(bào)錯(cuò)。

當(dāng)然上圖當(dāng)中,我們可能會(huì)看到文本內(nèi)容是3、2、1這個(gè)順序,這是因?yàn)槊看未鎯?chǔ)的時(shí)候都會(huì)插入第一行,所以后插入的內(nèi)容,就會(huì)在第一行,如果我們想要在最后一行插入,就需要每次獲取當(dāng)前文本中一共有多少行,然后再去指定的最后一行插入內(nèi)容。

還是看一下代碼:

dim arr=array("我要記憶的內(nèi)容1","我要記憶的內(nèi)容2","我要記憶的內(nèi)容3")

dim path="/sdcard/pictures/1.txt" //"我要存儲(chǔ)的位置是雷電模擬器的共享文件夾1.txt"

Dim line //行號(hào)

For i = 1 To 3

line = file.LinesNumber(path)

file.writeline(path,line,arr(i-1))

Next

寫到這里是不是有人覺(jué)得長(zhǎng)期記憶要比短期記憶好,以后如果用到“記憶”這個(gè)功能的時(shí)候,就用長(zhǎng)期記憶,其實(shí)這么想是不對(duì)的,這個(gè)要根據(jù)具體的需要,對(duì)于短期記憶來(lái)說(shuō)操作更簡(jiǎn)便,因?yàn)橹挥幸粋€(gè)內(nèi)容,也避免了干擾項(xiàng),使用的時(shí)候不容易出錯(cuò)。至于使用哪種方式?jīng)]有固定的,有的時(shí)候甚至是長(zhǎng)期和短期記憶同時(shí)使用。

說(shuō)到使用了,那么我就來(lái)看看怎么提取這個(gè)“記憶”,在命令庫(kù)里面我們是有file.read、file.readline、file.readlines命令,它們都是讀取命令,關(guān)于命令的介紹,大家可以直接看命令庫(kù),我來(lái)說(shuō)一下,提取的思路。

Dim m=file.read("/sdcard/pictures/1.txt")

If m = null Then?

TracePrint "因?yàn)槲谋臼强盏模@是首次記憶內(nèi)容"

Else

TracePrint "讀取的內(nèi)容是:"&m

End If

這段代碼除了有讀取功能外,還有判斷功能,這個(gè)就是提取的思路,不是簡(jiǎn)單的讀取。

分析一下這段代碼,我主要寫了讀取1.txt這個(gè)文本,然后對(duì)讀取的內(nèi)容進(jìn)行判斷是不是空白的,如果是空白的,說(shuō)明之前沒(méi)有“記憶”過(guò)內(nèi)容,腳本是首次使用,如果有內(nèi)容,我就把內(nèi)容輸出來(lái),可以清楚的看到內(nèi)容是什么,之后腳本就可以根據(jù)內(nèi)容來(lái)執(zhí)行下一步具體的功能。

如果想要實(shí)現(xiàn)更復(fù)雜的功能,可以把文本內(nèi)容賦予特定的意義,比方說(shuō),讀取到的文本是1,就讓腳本執(zhí)行第一個(gè)功能,讀取到的文本是2,就讓腳本執(zhí)行第二個(gè)功能,以此類推,可以給腳本賦予無(wú)限多的可能性。

關(guān)于文字記憶功能差不多就是這些內(nèi)容,但是在實(shí)際應(yīng)用的過(guò)程中,很可能是多次存儲(chǔ)以及多次提取的混合使用,對(duì)于提取的內(nèi)容二次處理也是非常重要的,還有涉及到大量的判讀處理,我們?cè)趯W(xué)習(xí)過(guò)程中要不斷練習(xí),培養(yǎng)自己的編程思維。

下面說(shuō)一下圖片記憶功能:

對(duì)于“記憶”這個(gè)功能,其實(shí)就是兩個(gè)操作——存儲(chǔ)和提取。

圖片的存儲(chǔ)我們用snapshot命令,提取我們就用找圖命令。

先來(lái)看一個(gè)例子

我想要截取“賬戶”這個(gè)位置的圖片。

SnapShot "/sdcard/pictures/1.png",70,388,111,416

生成了一個(gè)叫做1.png的圖片,這個(gè)圖片就是我剛剛截圖保存的。如果你想要“長(zhǎng)期記憶”那么每一次截圖的文件名都要不同,否則就會(huì)被覆蓋變成了“短期記憶”。

在提取記憶的時(shí)候我們是用找圖命令,我們通常找圖命令是這樣寫的

圖片先要手動(dòng)放到按鍵精靈的附件里面,之后在代碼當(dāng)中填寫圖片路徑"Attachment:1.png",這樣才能找到指定的圖片。我們這篇文章講的是腳本自己記憶,肯定不能用手動(dòng)添加附件的方式,那么我就要修改找圖命令的圖片路徑了,其實(shí)找圖命令是支持手機(jī)(模擬器)文件路徑的,也就是說(shuō)上面的代碼我們?cè)诓惶砑痈郊那闆r下,可以寫成這樣:

Dim intX, intY

FindPic 0, 0, 0, 0, "/sdcard/pictures/1.png", "000000", 0, 0.9, intX, intY

If intX > -1 And intY > -1 Then?

TracePrint "找到圖了"

End If

這里的圖片路徑是"/sdcard/pictures/1.png",和我之前截圖的路徑是完全一樣的了。那么我們就可以把存儲(chǔ)和提取結(jié)合在一起,形成完整的記憶了。

Dim intX, intY

Do

FindPic 0, 0, 0, 0, "/sdcard/pictures/1.png", "000000", 0, 0.9, intX, intY

If intX > -1 And intY > -1 Then?

TracePrint "找到圖了,記錄一下當(dāng)前的位置"

Delay 500

SnapShot "/sdcard/pictures/1.png",70,388,111,416

Exit Do

Else?

TracePrint "沒(méi)有找到圖,要往上滑動(dòng)了"

Delay 500

Swipe 200,600,200,500,1000

End If

Delay 1000

Loop

這段代碼完成的功能是每次找到圖以后,記錄一下當(dāng)前指定位置的圖片,保存到指定路徑,這樣當(dāng)腳本出現(xiàn)錯(cuò)誤,或者手動(dòng)關(guān)閉,再次開啟的時(shí)候,就可以知道上次腳本運(yùn)行到哪個(gè)“畫面”了。

我的代碼是把截圖命令放到找圖命令里面,實(shí)際腳本可能會(huì)放在完成某個(gè)具體的功能后面,比如聊天軟件當(dāng)中和某個(gè)人對(duì)話后,截取對(duì)方頭像保存下來(lái),下次在進(jìn)入聊天窗口以后,可以通過(guò)判斷畫面中有沒(méi)有截圖存儲(chǔ)的頭像,來(lái)判讀是不是之前進(jìn)行過(guò)對(duì)話。

最后我想說(shuō),關(guān)于記憶功能在實(shí)際應(yīng)用當(dāng)中,不同場(chǎng)景的應(yīng)用代碼是不同的,所以大家不要單純的套用上面我寫的代碼,要學(xué)會(huì)舉一反三。

?著作權(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)容