本站AI自動判斷提供您所需要的app下載:點(diǎn)我下載安裝,你懂的APP
本篇文章給大家談?wù)?.76經(jīng)典版?zhèn)髌?a href="http://www.hljstys.com/t192910.html">按鍵精靈腳本,以及經(jīng)典傳奇單機(jī)版的知識點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。
文章詳情介紹:
「按鍵精靈安卓版」快速給你的腳本加上保存配置和加載配置
大家好,我是公眾號3分鐘學(xué)堂的郭立員。給大家介紹一種給腳本快速添加「保存」和「讀取」UI配置文件的方法,我公眾號的老粉可能知道怎么保存和讀取界面配置,因?yàn)槲抑皩戇^兩期相關(guān)的文章教程。
這一期文章教程我們著重體現(xiàn)兩個(gè)字“快速”,教大家寫好模板下次直接給自己的腳本添加一下就行。
效果展示存儲配置和加載配置
往期原理介紹回顧一下之前兩期的原理啊~
方法1:通過uip命令讀取界面上的內(nèi)容,然后按照元素名稱以鍵值對的形式(json)寫入到文本里面,利用文本這個(gè)存儲媒介實(shí)現(xiàn)保存和讀取界面配置。
方法2:讀取和寫入界面配置文件來實(shí)現(xiàn)界面存儲和加載。配置文件存儲位置有2種情況~
【情況1】腳本調(diào)試階段,配置文件路徑是:新版和老版按鍵助手路徑不同。
/sdcard/MobileAnJian/UIConfig/ //老版按鍵助手
/sdcard/MobileAnJianVip/UIConfig/ //新版按鍵助手
【情況2】腳本打包后,配置文件路徑是:
/data/data/"&包名&"/files/script.cfg
這兩類路徑一定要區(qū)分開,不能用混淆了。
往期這兩種方法各有弊端,方法1需要預(yù)先寫好每一個(gè)輸入框、多選框、下拉框的名稱,不能隨便修改,如果已經(jīng)寫好的腳本,就不適合用這個(gè)方法去寫了。
方法2的弊端是我在腳本中寫的讀取和寫入配置文件的,必須在運(yùn)行腳本后生效,保存配置點(diǎn)一下運(yùn)行腳本還好,如果是加載配置就顯得很麻煩了,加載完還要重啟腳本才能看到界面上的內(nèi)容變化。
本期原理介紹這一期的原理是結(jié)合前兩期的內(nèi)容,以方法1為基礎(chǔ),通過方法2獲取元素名稱及類型,解決方法1的缺陷。
下面分別說一下保存配置和讀取配置
保存界面原理①讀取界面上“可修改”內(nèi)容,也就是被存儲到界面配置文件里面的,并不是所有的界面元素啊,這一點(diǎn)需要注意一下。“可修改”內(nèi)容包括:輸入框的內(nèi)容、多選框是否勾選、下拉框的選項(xiàng)。
UIP.GetAttribute("界面元素名稱")
這個(gè)命令的返回值是鍵值對的表(數(shù)組),每個(gè)界面元素的鍵值對都是不一樣的。
輸入框的內(nèi)容
dim ret=uip.GetAttribute("輸入框1")
showmessage ret["初始文本"]
多選框是否勾選
dim ret=uip.GetAttribute("多選框1")
showmessage ret["選中"]
下拉框的選項(xiàng)編號
dim ret=uip.GetAttribute("下拉框1")
showmessage ret["初始選項(xiàng)"]
如果你想深入了解的話,可以通過下面的代碼把所有的界面元素返回值都看一遍。
Function 按鈕點(diǎn)擊事件()
dim ret=uip.GetAttribute("界面元素名稱")
Dim json=encode.tabletojson(ret)
showmessage json
End Function
②解決獲取界面元素名稱的問題,本文的高光點(diǎn)。
以前在讀取界面上內(nèi)容時(shí),都是要預(yù)先知道界面上所有元素的名稱,比如輸入框有3個(gè),我們知道輸入框1名稱、輸入框2名稱、輸入框3名稱,如果按照循環(huán)去寫名稱還好,可以通過計(jì)次循環(huán)的方式拼接名稱,比如輸入框+序號。
如果在編寫腳本開始時(shí)就打算好了添加配置文件保存和加載功能,可以專門留言命名問題,但是我們在寫腳本的時(shí)候都是根據(jù)需要隨時(shí)可能會添加界面元素,那么這個(gè)就是個(gè)頭疼的問題了。
那么怎么解決呢?
讀取腳本自己生成的界面配置文件,當(dāng)我們點(diǎn)擊界面下方的保存按鈕,在手機(jī)(模擬器)生成配置文件。
配置文件中保存我們想要的界面元素名稱。
{"下拉框1":0,"多選框1":true,"輸入框1":"你好"}
分析到這里,我們串聯(lián)一下界面源碼、界面展示內(nèi)容、界面配置文件三者之間的關(guān)系,下面以輸入框?yàn)槔齸
通過上圖可以看到,界面上的元素名稱,除了源碼中有,在配置文件里面也有,那么這就為我們解決獲取界面元素名稱問題提供了一個(gè)新的思路,讀取配置文件里面元素名稱。
第一步:使用文本讀取命令file.read,讀取配置文件的內(nèi)容,得到鍵值對的表。
第二步:對于一個(gè)鍵值對的表,想要獲取它的鍵名,最簡單的方法就是遍歷數(shù)組了。
For Each k , v In table
//table是鍵值對
//k是鍵值(key)
//v是鍵值(value)
Next
第三步:獲取到鍵名也就是元素名稱,還有一個(gè)問題就是,怎么區(qū)分元素的類型。
通常來說,界面元素默認(rèn)的命名方式是元素類型+編號:
輸入框1、輸入框2、輸入框3…
多選框1、多選框2、多選框3…
下拉框1、下拉框2、下拉框3…
如果大家都本本分分的使用這個(gè)默認(rèn)名稱,那也還好,但是往往大家為了能夠區(qū)分每個(gè)元素的作用,會給它們修改名稱。
這樣一來就出問題了,當(dāng)我們通過讀取配置文件獲取到一個(gè)元素名稱,然后下一步就沒法通過名稱命名判斷元素的類型了,到底是輸入框、多選框還是下拉框。
解決這個(gè)問題我提供了另外一個(gè)思路:判斷鍵值的類型。
讀取輸入框我們獲取到內(nèi)容是字符串類型,讀取多選框我們獲取的true和false的布爾值類型,讀取下拉框我們獲取到的是01234的數(shù)值類型。
每一個(gè)界面元素的值都有自己不同的類型,根據(jù)鍵值類型反推元素類型,這個(gè)確實(shí)是一個(gè)可行的思路。
當(dāng)然到這里我還是有一點(diǎn)擔(dān)憂,因?yàn)槲覔?dān)心界面代碼區(qū)不支持山海插件的tpye命令,那么就無法獲取到數(shù)據(jù)類型了,好在測試了一下可以支持。
import "shanhai.lua"
Function 響應(yīng)事件()
Dim v=123
showmessage shanhai.type(v)
End Function
新建一個(gè)界面加上一個(gè)按鈕的點(diǎn)擊響應(yīng)事件函數(shù),測試即可。
介紹3類返回值的寫法:
字符串:string
數(shù)值:number
布爾值:Boolean
到這一步我們可以把名稱及對應(yīng)的類型獲取到了,那么就差最后一步寫入配置了。
③把界面上的內(nèi)容存儲起來。
之前的步驟已經(jīng)可以把所有的元素名稱及類型獲取到了,之后我就可以用
uip.GetAttribute 命令把界面所有內(nèi)容都獲取一遍,并以鍵值對的形式存入到一個(gè)新的文件中。
這個(gè)文件的后綴可以是txt文本,cfg配置文件,甚至不寫后綴都行。
文件的路徑,如果是手機(jī)那就無所謂了,如果是模擬器想要實(shí)現(xiàn)多個(gè)模擬器共享配置文件就需要注意,必須放在共享文件夾里面,如果不想共享配置文件,就需要放到其他非共享文件夾里面。
當(dāng)然不共享還有一個(gè)方法,就是文件名用imsi,imei之類的參數(shù)值,這樣每個(gè)設(shè)備也不一樣,即使放到共享文件夾里面配置文件也不共享的。
保存配置代碼代碼中的一些細(xì)節(jié):
①代碼是腳本調(diào)試時(shí)的,它使用的是調(diào)試路徑,并且那一串隨機(jī)字符我模擬器里面的不是你的,必須要自己修改。
看生成文件的日期找你自己剛剛操作的界面配置文件。
②界面配置文件缺失報(bào)錯(cuò)機(jī)制,首次使用腳本,如果不點(diǎn)擊保存按鈕是不生成配置文件的,所以需要加一個(gè)提示信息。
③存儲配置不是直接復(fù)制生成的配置文件,而是遍歷界面上所有的元素,然后存儲起來,原因是修改完界面內(nèi)容,如果不點(diǎn)下方保存按鈕,配置文件不會修改,直接復(fù)制配置文件,只能存儲上次點(diǎn)擊保存按鈕時(shí)的界面內(nèi)容。
讀取配置原理
讀取配置涉及到的知識點(diǎn),基本保存配置一樣。
第一步:讀取配置文件,注意是你存儲的配置,不是自動生成的配置文件,路徑別寫錯(cuò)了。
第二步:轉(zhuǎn)一下table,獲取到元素的鍵值對。
第三步:判斷每一個(gè)元素的名稱和值的類型,逐個(gè)修改界面元素。使用uip.SetAttribute命令。
讀取配置代碼使用方法按照我上面的講解的內(nèi)容,寫好自己的模板,之后如果想給自己的腳本添加此功能,可以先在界面源碼中添加兩個(gè)按鈕,點(diǎn)擊響應(yīng)的名稱寫“存儲配置”和“加載配置”,然后把函數(shù)代碼放到界面代碼區(qū),就可以使用了。
最后強(qiáng)調(diào)一點(diǎn),首次使用腳本一定要先點(diǎn)一下自帶的保存設(shè)置按鈕。