大家好增显,我是公眾號3分鐘學(xué)堂的郭立員!說到記憶這個詞我們肯定會想到人本身涨享,一個人通過感官獲取到外部信息以后筋搏,就會存儲到大腦當(dāng)中,形成了長期或者短期記憶厕隧。比如看到的奔脐、聽到的俄周、聞到的、觸碰到的都能存儲到大腦當(dāng)中髓迎。
對于腳本來說峦朗,就沒有這么復(fù)雜了,主要就是看到的排龄,包括圖片波势、文字。那么我們怎么去記憶以及怎么提取記憶使用橄维,就是這篇文章要講的主要內(nèi)容了艰亮。
我們先來看看“文字的記憶“,很多軟件都有配置文件挣郭,那個其實就具有記憶功能迄埃,對于按鍵精靈安卓版來說,最簡單的方式就是通過文本記錄兑障,常用到的命令就是寫入命令侄非。我們先來看一段代碼:
dim a="我要記憶的內(nèi)容"
dim path="/sdcard/pictures/1.txt" //"我要存儲的位置是雷電模擬器的共享文件夾當(dāng)中的1.txt這個文本當(dāng)中"
file.write(path,a)
當(dāng)我運(yùn)行這段代碼之后,在共享文件夾里面會出現(xiàn)一個1.txt文本流译,文本內(nèi)容為"我要記憶的內(nèi)容"逞怨,這就實現(xiàn)了“記憶”功能。
對于記憶來說福澡,我們簡單分成了短期記憶和長期記憶叠赦。
短期記憶是上面代碼中的file.write命令,之所以叫它短期記憶革砸,是因為只要二次運(yùn)行這個命令除秀,原來的內(nèi)容就會被新的內(nèi)容覆蓋,多次運(yùn)行以后算利,就只保留了最后一次運(yùn)行的內(nèi)容册踩,所以叫它短期記憶。
當(dāng)然不是說用了file.write命令就一定是短期記憶效拭,如果每次存儲的文件名不同暂吉,它也可以變成長期記憶。我們看一下代碼:
dim arr=array("我要記憶的內(nèi)容1","我要記憶的內(nèi)容2","我要記憶的內(nèi)容3")
dim path="/sdcard/pictures/" //"我要存儲的位置是雷電模擬器的共享文件夾"
For i = 1 To 3
file.write(path&i&".txt",arr(i-1))
Next
運(yùn)行這段代碼以后缎患,就會在文件夾里面生成3個文本慕的,因為名字不同,所以它們不會互相干擾挤渔,避免了被覆蓋的可能肮街,從而形成了長期記憶。
我們再說一下另外一種長期記憶蚂蕴,就是在同一個文本里面插入內(nèi)容低散,并且保留原始內(nèi)容俯邓,常用命令是file.writeline。這個命令可以執(zhí)行在文本的某一個行里面添加內(nèi)容熔号,不會覆蓋掉原來的內(nèi)容稽鞭。
我們來看一下代碼:
dim arr=array("我要記憶的內(nèi)容1","我要記憶的內(nèi)容2","我要記憶的內(nèi)容3")
dim path="/sdcard/pictures/1.txt" //"我要存儲的位置是雷電模擬器的共享文件夾1.txt"
For i = 1 To 3
file.writeline(path,1,arr(i-1))
Next
通過運(yùn)行代碼我們可以看到1.txt這個文本里面有3行內(nèi)容(看下圖),就是我們要記錄的內(nèi)容引镊,這個命令需要特別注意朦蕴,必須要在運(yùn)行代碼前,文件夾里面一定要有對應(yīng)的文本文件弟头,命令不會新建文件吩抓,如果沒有對應(yīng)的文件,就會報錯赴恨。
當(dāng)然上圖當(dāng)中疹娶,我們可能會看到文本內(nèi)容是3、2伦连、1這個順序雨饺,這是因為每次存儲的時候都會插入第一行,所以后插入的內(nèi)容惑淳,就會在第一行额港,如果我們想要在最后一行插入,就需要每次獲取當(dāng)前文本中一共有多少行歧焦,然后再去指定的最后一行插入內(nèi)容移斩。
還是看一下代碼:
dim arr=array("我要記憶的內(nèi)容1","我要記憶的內(nèi)容2","我要記憶的內(nèi)容3")
dim path="/sdcard/pictures/1.txt" //"我要存儲的位置是雷電模擬器的共享文件夾1.txt"
Dim line //行號
For i = 1 To 3
line = file.LinesNumber(path)
file.writeline(path,line,arr(i-1))
Next
寫到這里是不是有人覺得長期記憶要比短期記憶好,以后如果用到“記憶”這個功能的時候绢馍,就用長期記憶向瓷,其實這么想是不對的,這個要根據(jù)具體的需要痕貌,對于短期記憶來說操作更簡便风罩,因為只有一個內(nèi)容,也避免了干擾項舵稠,使用的時候不容易出錯。至于使用哪種方式?jīng)]有固定的入宦,有的時候甚至是長期和短期記憶同時使用哺徊。
說到使用了,那么我就來看看怎么提取這個“記憶”乾闰,在命令庫里面我們是有file.read落追、file.readline、file.readlines命令涯肩,它們都是讀取命令轿钠,關(guān)于命令的介紹巢钓,大家可以直接看命令庫,我來說一下疗垛,提取的思路症汹。
Dim m=file.read("/sdcard/pictures/1.txt")
If m = null Then?
TracePrint "因為文本是空的,這是首次記憶內(nèi)容"
Else
TracePrint "讀取的內(nèi)容是:"&m
End If
這段代碼除了有讀取功能外贷腕,還有判斷功能背镇,這個就是提取的思路,不是簡單的讀取泽裳。
分析一下這段代碼瞒斩,我主要寫了讀取1.txt這個文本,然后對讀取的內(nèi)容進(jìn)行判斷是不是空白的涮总,如果是空白的胸囱,說明之前沒有“記憶”過內(nèi)容,腳本是首次使用瀑梗,如果有內(nèi)容烹笔,我就把內(nèi)容輸出來,可以清楚的看到內(nèi)容是什么夺克,之后腳本就可以根據(jù)內(nèi)容來執(zhí)行下一步具體的功能箕宙。
如果想要實現(xiàn)更復(fù)雜的功能,可以把文本內(nèi)容賦予特定的意義铺纽,比方說柬帕,讀取到的文本是1,就讓腳本執(zhí)行第一個功能狡门,讀取到的文本是2陷寝,就讓腳本執(zhí)行第二個功能,以此類推其馏,可以給腳本賦予無限多的可能性凤跑。
關(guān)于文字記憶功能差不多就是這些內(nèi)容,但是在實際應(yīng)用的過程中叛复,很可能是多次存儲以及多次提取的混合使用仔引,對于提取的內(nèi)容二次處理也是非常重要的,還有涉及到大量的判讀處理褐奥,我們在學(xué)習(xí)過程中要不斷練習(xí)咖耘,培養(yǎng)自己的編程思維。
下面說一下圖片記憶功能:
對于“記憶”這個功能撬码,其實就是兩個操作——存儲和提取儿倒。
圖片的存儲我們用snapshot命令,提取我們就用找圖命令呜笑。
先來看一個例子
我想要截取“賬戶”這個位置的圖片夫否。
SnapShot "/sdcard/pictures/1.png",70,388,111,416
生成了一個叫做1.png的圖片彻犁,這個圖片就是我剛剛截圖保存的。如果你想要“長期記憶”那么每一次截圖的文件名都要不同凰慈,否則就會被覆蓋變成了“短期記憶”汞幢。
在提取記憶的時候我們是用找圖命令,我們通常找圖命令是這樣寫的
圖片先要手動放到按鍵精靈的附件里面溉瓶,之后在代碼當(dāng)中填寫圖片路徑"Attachment:1.png"急鳄,這樣才能找到指定的圖片。我們這篇文章講的是腳本自己記憶堰酿,肯定不能用手動添加附件的方式疾宏,那么我就要修改找圖命令的圖片路徑了,其實找圖命令是支持手機(jī)(模擬器)文件路徑的触创,也就是說上面的代碼我們在不添加附件的情況下坎藐,可以寫成這樣:
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",和我之前截圖的路徑是完全一樣的了哼绑。那么我們就可以把存儲和提取結(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 "沒有找到圖抖韩,要往上滑動了"
Delay 500
Swipe 200,600,200,500,1000
End If
Delay 1000
Loop
這段代碼完成的功能是每次找到圖以后蛀恩,記錄一下當(dāng)前指定位置的圖片,保存到指定路徑茂浮,這樣當(dāng)腳本出現(xiàn)錯誤双谆,或者手動關(guān)閉,再次開啟的時候席揽,就可以知道上次腳本運(yùn)行到哪個“畫面”了顽馋。
我的代碼是把截圖命令放到找圖命令里面,實際腳本可能會放在完成某個具體的功能后面幌羞,比如聊天軟件當(dāng)中和某個人對話后寸谜,截取對方頭像保存下來,下次在進(jìn)入聊天窗口以后属桦,可以通過判斷畫面中有沒有截圖存儲的頭像熊痴,來判讀是不是之前進(jìn)行過對話。
最后我想說聂宾,關(guān)于記憶功能在實際應(yīng)用當(dāng)中愁拭,不同場景的應(yīng)用代碼是不同的,所以大家不要單純的套用上面我寫的代碼亏吝,要學(xué)會舉一反三。