1.76經典版傳奇按鍵精靈腳本同經典傳奇單機版


本站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命令。

讀取配置代碼使用方法

按照我上面的講解的內容,寫好自己的模板,之后如果想給自己的腳本添加此功能,可以先在界面源碼中添加兩個按鈕,點擊響應的名稱寫“存儲配置”和“加載配置”,然后把函數代碼放到界面代碼區,就可以使用了。

最后強調一點,首次使用腳本一定要先點一下自帶的保存設置按鈕。