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