Post by AnkuLua on Nov 10, 2016 23:51:24 GMT 9
スクリプトを正確に動かせ、或いはスクリプトの開発とデバッグに、大切な設定はいくつかあります。
スクリプト動作についての設定
Settings:setCompareDimension(boolean compareByWidth, int pixels):
スクリプトを実行する装置とスクリプトを開発する時図案を捕捉する装置の解像度が違う場合があるので、
図案を捜す前、AnkuLuaが実行する装置から捕捉した画面を開発用装置の解像度に合わせて調節します。そうしないと、図案の照合は正しくできません。
この函数が捕捉した画面の解像度の調節を設定します。
compareByWidth: 対応のAppは画面の幅でサイズを調節すれば、trueにしてください。大部分のAppには、trueにするといいです。
pixels: 図案捜す時の画面の解像度。compareByWidthの設定によって、画面の幅或いは高さにしてください。
Return value: 戻り値なし
これこそAnkuLuaは1つのスクリプトが色んな装置で正確に動ける秘訣です。一つ目の例を見てみましょう。 用意した図案は幅解像度960の設備から捕捉されたので、スクリプトの設定は次のようです。
Settings:setCompareDimension(true, 960)
解像度の違う装置でこのスクリプトを実行する時、図案捜す前に捕捉した画面は960解像度に調節されます。
捕捉した画面は全て設定に従ってサイズを調節されるので、スクリプトは解像度の違う装置で正確に動けます。
ご注意: 解像度は装置実際の解像度ではないですが、APPが使える画面の解像度に設定すべきです。
navigation barがある装置はAppの使える画面と実際画面が違う例です。
次の図に、Appの使える画面は黄色の枠です。
getAppUsableScreenSize()
getRealScreenSize()
函数 getAppUsableScreenSize() はAppの使える画面解像度を取得します
函数 getRealScreenSize() は装置実際の画面解像度を取得します
local screen = getAppUsableScreenSize()
print(screen:getX()) -- the width of App usable screen
print(screen:getY()) -- the height of App usable screen
screen = getRealScreenSize()
print(screen:getX()) -- the width of device real screen
print(screen:getY()) -- the height of device real screen
setImmersiveMode(enable)
前の話のように、一部分の装置には navigation bar があって、でも大部分の App はこの navigation bar の区域を使わないです。
immersive 状況に、Appがこの navigation bar を隠せて、この区域を使えるようにします。
App は mmersive 状況にで、 Settings:setCompareDimension を画面を実際解像度に設定した上、この函数を使ってください。
ご參考: GoogleのImmersiveの説明
Settings:setScriptDimension(boolean compareByWidth, int pixels):
この函数はスクリプトの画面解像度を設定します。
compareByWidth: 自動化させたい APP は画面の幅を従って解像度を調節すれば、true に設定してください。大部分の APP には、true に設定するといいです。
pixels: 実行する装置の解像度です。compareByWidth の設定によって、画面の幅或いは高さになります。
Return value: 戻り値なし
この数値も APP の使える画面解像度を参照するんです。
どんな状況でこの数値を使うんですか?次の例を見てみよう。
click(Location(100,200))
Location(100,200) は絶対の数値です。スクリプトを実行する装置の解像度は開発用装置のと違う場合には、この数値は実行する装置の解像度に合わせて調節するべきです。scriptDimension はスクリプトを開発する装置の解像度です。
比較用解像度(CompareDimension)とスクリプト解像度(ScriptDimension)と違う場合はあるの?
あるんですよ。
図案捜しのスピードと比較用解像度は密接な関係があります。だから、図案を縮めて、相応の解像度を設定して、図案捜しのスピードが速まります。
スクリプトを最適化にして実行するスピードを速めるについて、スクリプトの最適化を見てください。
setImagePath(String path)
この函数はAnkuLuaの図案のディレクトリを設定します。
ディフォルトは"image"です。
Settings:Set(String var, double value)
var: AutoWaitTimeout 或 MinSimilarity
value: var は AutoWaitTimeout の場合、value
この数値はディフォルトの時限です。時限のある函数(例えばwait())に時限のパラメータを設定しなければ、この数値はディフォルトの時限にします。
Settings:Set("AutoWaitTimeout", 5)
wait("target.png") -- 5秒以内"target.png"が現れないと、例外(exception)を出します。
wait("target.png", 3) -- 時限は3秒
var は MinSimilarity の場合、valueはディフォルトの相似度になります。SとPオブジェクトのディフォルト相似度を変更したい場合、函数 similar() を使ってください。
Return value: 戻り値なし
これらの数値は設定しなかったら、ディフォルトの AutoWaitTimeout は3秒、 MinSimilarity は 0.7 です。
Settings:Get(String var)
var: AutoWaitTimeout 或MinSimilarity
Return value: AutoWaitTimeout 或いは MinSimilarity の値.
usePreviousSnap(boolean value)
この函数は前の画面を繰り返して使うかどうかを設定します(true/false)。 この函数はスピードを速めるためです。
同じ画面で複数の図案を捜したい場合、次の例を見てください
wait("image1.png")
usePreviousSnap(true)
if (exists("image2.png") or exists("image3.png") then -- reuse previous screenshot
-- do some thing
end
usePreviousSnap(false) -- remember to set the value back to false
setAlternativeClick(boolean enable)
もともとのタップ方法で正しく動作できないゲームがあります。だから、バージョン3.2.0以降は他のタップ方法を使います。
新しいタップ方法を使う場合、次の函数を使ってください。
setAlternativeClick(true)
スクリプト開発についての設定
Settings:snapSet(String var, boolean value)
デバッグのために、この函数はスクリプト実行中の全部捕捉した画面を保存するかどうかを設定します。
全部捕捉した画面は /sdcard/captured_images に保存します。
var: OutputCaptureImg, OutputCropImg, OutputResizeImg 或いは OutputRegImg
value: var はOutputCaptureImg 、そしてtrueに設定したら、捕捉した画面は全体的に"capture.png"に保存します。
var はOutputCropImg 、そしてtrueに設定したら、捕捉した画面は裁ってから、"crop.png"に保存します
var はOutputResizeImg 、そしてtrueに設定したら、捕捉した画面は裁って、setCompareDimensionを従ってサイズを調節してから、 "resize.png"に保存します
var はOutputRegImg 、そしてtrueに設定したら、Regionは使ったら、regionの画面は "region.png"に保存します
[次のぺージ]: remoteAKL: AndroidをPCにマッピングする道具
[前のページ]: IntelliJ IDEAスクリプトエディター
[ホーム]: AnkuLua紹介