[変数] [If文] [Switch文] [リファレンス] [演算子]
状態, タグ色, ラベル (共通設定)
設定画面上部のアイコンをタップすると、状態を指定できます。
標準の状態を指定
スキップ状態(再生されない)を指定
ブックマーク状態(行き先指定の優先項目)を指定
シーン認識時に、どのシーンにも一致しなかった場合の開始項目に指定
ラベル
各アイコンをタップしてリスト内でのタグ色や表示名を指定できます。
タグ色を指定 (デフォルト: 左上の透明)
ラベル編集を開始
変数
FRep2アプリ内の変数に数値、文字列、または矩形を代入・計算します。1つの変数項目に複数指定した場合は、上から順番に実行されます。
後処理
成功したとき 処理完了後のプログラムの行き先
タップして開いた後、次へ、中断、完了、任意の項目を選択するか、あるいは左側に表示されている項目リストをタップして行き先を指定します。
変数設定
(変数)=(型):(引数) または (変数)=(型):(引数1) (演算子) (引数2) の変数設定を指定します。設定内容の詳細はリファレンス、変数用演算子を参照してください。
※演算子は下部の空白ボタンを押すと選択肢が現れます。
を押して末尾に新しい設定を追加できます。追加した設定は中央を押すと編集、長押しドラッグで移動、左側のでその設定を削除、右側のをタップで直前に新しい設定を追加、長押しでその設定をコピーできます。
If文
変数に格納された値を条件としてプログラムを分岐します。条件を満たした場合は成功したとき、満たさない場合は失敗時に分岐し、成否はシステム変数@lastifに記録(成功:1, 失敗:0)されます。
移動先
成功したとき、失敗時(else) 条件に一致(成功)したとき、しなかった(失敗)時の行き先
タップして開いた後、次へ、中断、完了、任意の項目を選択するか、あるいは左側に表示されている項目リストをタップして行き先を指定します。
条件設定
andまたはor(not):(値1) (比較演算子) (値2) の条件設定を指定します。複数の条件を複合的に組み合わせた条件も指定できます。
複合条件 And If, Or If, And If Not, Or If Not
複数の条件を組み合わせる際の種類は4つから選択できます。
- And If (and:) 直前の条件と共に満たす必要がある条件
- Or If (or:) 以前の条件が満たされていない場合でも別の条件として引き続き判定する条件
- And If Not (andnot:) 直前の条件と共に満たす必要がある条件、ただしこの条件の結果は逆転させる
- Or If Not (ornot:) 以前の条件が満たされていない場合でも別の条件として引き続き判定する条件、ただしこの条件の結果は逆転させる
1つ目の条件はand: or: の判定は行われません。また、and: or: とも入れ子構造にはならず、or: が存在する場合、or: により区切られた条件はリスト内で色分けされます。
条件設定内容の詳細はリファレンス、比較演算子を参照してください。
を押して末尾に新しい設定を追加できます。追加した設定は中央をタップして編集、長押しドラッグで移動、左側のでその設定を削除、右側のでその設定の直前に新しい設定を追加できます。
Switch文
変数に格納された値を条件としてプログラムを分岐します。条件1つにつき1つの行き先を指定でき、リストの上から順番に評価して最初に満たされた条件の行き先へ分岐します。どの条件にも一致しなかった場合は、その他(default)に指定した行き先へ分岐します。
使用できる比較演算子はIf文と同一ですが、複合条件(and:やor:等)は指定できません。複数の条件を判定する場合はIf文を使用してください。
条件:行き先
条件と、一致(成功)したときの行き先を指定します。条件は上から順番に判定されます。
を押して末尾に新しい設定を追加できます。追加した設定は中央を押すと編集、長押しドラッグで移動、左側のでその設定を削除、右側のでその設定の直前に新しい設定を追加できます。
一致しなかった場合
その他(default): どの条件にも一致しなかった場合のプログラムの行き先
タップして開いた後、次へ、中断、完了、任意の項目を選択するか、あるいは左側に表示されている項目リストをタップして行き先を指定します。
リファレンス
使用された変数はFRep2サービスが保持し、サービスの終了まで維持されます。同名の変数は他のプログラムからも参照・指定できます。また、再生中に参照・指定された変数は、再生終了時点の値を再生ログ(要FRep2 Unlock Key)から確認できます。
変数名 [A-Za-z_@][0-9A-Za-z_]+
変数名は半角英数およびアンダーバー(数字は2文字目以降)を使用できます。@で始まる変数はシステム変数で、引数や値の参照にのみ使用できます。
型 [(空), 数値, 矩形, 文字列]
値の型は(空)を含め4種類です。変数の型は保持している値で決定されます。
型 | 説明 | 定義例 |
---|---|---|
(空) | 値が定義されていない状態 ※再生ログ上ではnull表示 | var=num: var=rect: var=str: |
数値 | 整数、小数、負数 ※一部演算子では整数に切り捨てた値が使用される | var=num:0 var=num:0.012 var=num:-0.5 |
矩形 | (left top right bottom) 形式で定義される矩形 各成分は整数または変数 | var=rect:(10 20 30 40) |
文字列 | “文字列内容”形式で定義 エスケープ文字は (改行:)\n (タブ:)\t (\:)\ (“:)\” | var=str:”line1\nline2″ |
@システム変数一覧
機器や再生の状況を参照するためのシステム変数です。代入はできません。
変数名 | 型 | 説明 |
---|---|---|
@repeat | 数値 | 現在の繰り返し再生回数(初回0) |
@loop | 数値 | 直近のループ項目カウント(初回0) |
@lastif | 数値 | 直近のIF項目の成否(成功時1,失敗時0) |
@rotation | 数値 | 現在の画面向き(0: 0°, 1:90°, 2:180°, 3:270°) |
@start | 数値 | 再生開始時刻(ms) |
@now | 数値 | 現在時刻(ms) |
@lastfinish | 数値 | そのプログラムが前回再生されたときの成否 (-1:失敗/中断, 0:未再生, 1:再生成功/完了) |
@laststep | 数値 | そのプログラムが前回再生されたときの最後のステップ番号 (未再生の場合は0) |
@lasttime | 数値 | そのプログラムが前回再生終了した時刻(ms) |
@lastmatch | 矩形 | 直近の画像認識に成功した際の位置 (成功時のみ上書き) |
@screen | 矩形 | 機器のスクリーンサイズ(向きは0°固定) |
@clipboard | 文字列 | クリップボードテキスト内容(参照専用) ※値を指定する場合は別途クリップボード項目を使用 (Android 10~環境で使用時にアプリ変化が発生する 場合は関連設定「クリップボード取得法」を参照) |
@labelmatch | 文字列 | 直近の画像認識に成功した際の項目番号とラベル (成功時のみ上書き) |
@lastocr | 文字列 | 直近の文字認識に成功または数値変換のみに失敗した場合の認識文字列 |
@labelocr | 文字列 | 直近の文字認識に成功した際の項目番号とラベル (成功または数値変換のみに失敗した場合に上書き) |
@lastsw | 文字列 | 最後のSwitch分岐結果 (一致しなかった場合は”default”) |
@tofrep | 文字列 | FRep2 Tasker Pluginで指定された呼び出し変数 (パネルやショートカットからの再生時には空) |
変数の特殊参照 var.left, var.x, var.length
一部の型を保持している変数は、その内部値に基づく値を参照できます。
特殊参照 | 説明 | 例 |
---|---|---|
(矩形).left (矩形).top (矩形).right (矩形).bottom | 矩形の各成分値(数値)を参照 | l=num:r.left |
(矩形).x (矩形).y | 矩形の中央座標のx,y値(数値)を参照 x=(left+right)/2 y=(top+bottom)/2 | centerx=num:r.x |
(矩形).width (矩形).height | 矩形の幅,高さを参照 width=right-left height=bottom-top | w=num:r.width |
(文字列).length | 文字列の長さを参照 | len=num:s.length |
(文字列).asnum (文字列).asrect | “数字”文字列を数値として参照, “(left top right bottom)”文字列を 矩形として参照 | n=num:s.asnum r=rect:s.asrect |
(文字列).asint (数値).asint | “数字”文字列を整数値として参照, 既存の数値を整数値として参照 (小数点以下切り捨て) | i=num:s.asint j=num:n.asint |
(数値).asstr (矩形).asstr | 値を文字列として参照 | s=str:n.asstr s=str:r.asstr |
(数値).asdate (数値).astime | 時刻(ms)の数値を日付文字列 (yyyy/MM/dd kk:mm:ss)として参照 時刻の差分(ms)の数値を時間文字列 (hour:min:sec.ms)として参照 | s=str:@now.asdate t=num:@now–@start s=str:t.astime |
変数用演算子
num: 数値の設定・演算用
演算子 | 引数1 | 引数2 | 説明 | 例 |
---|---|---|---|---|
(なし) | 変数, 数値 | (なし) | 数値を指定 | var=num:0 |
+ – * | 変数, 数値 | 変数, 数値 | 加算 減算 乗算 | var=num:var + 1 |
/ | 変数, 数値 | 変数, 数値 | 除算 (引数2が0の場合は引数1の値を返す) | var=num:var / 3 |
% | 変数, 数値 | 変数, 数値 | 剰余(引数2が0の場合は0を返す) | var=num:var % 3 |
& | ^ | 変数, 数値 | 変数, 数値 | ビット演算AND OR XOR (引数1,2は整数型に強制) | var=num:var & 7 |
~ | 変数, 数値 | 変数, 数値 | ビット演算ANDNOT (引数1,2は整数型に強制) | var=num:var ~ 128 |
rect: 矩形の設定・演算
演算子 | 引数1 | 引数2 | 説明 | 例 |
---|---|---|---|---|
(なし) | 変数, 矩形 | (なし) | 矩形を指定 | var=rect:(0 0 100 200) |
+ – * | 変数, 矩形 | 変数, 数値, 矩形 | 加算 減算 乗算 (引数2が矩形の場合、成分ごとに演算。数値の場合、全ての成分に対して同じ演算を行う) | var=rect:var + (10 20 10 20) ※(10,20)オフセット移動 |
/ | 変数, 矩形 | 変数, 数値, 矩形 | 除算 (引数2が矩形の場合、成分ごとに演算。数値の場合、全ての成分に対して同じ演算を行う) (除算する値が0の場合は該当する引数1の値をそのまま返す) | var=rect:var / (2 2 0 0) ※左上座標のみ半分の値に |
& | 変数, 矩形 | 変数, 矩形 | 交差部分の取得(Intersect) | var=rect:var & @screen ※スクリーンサイズに収まるよう切り抜き |
| | 変数, 矩形 | 変数, 矩形 | 両方の矩形を含む最小の矩形を取得(Union) | var=rect:var | @lastmatch ※画像認識位置を含むように拡張 |
rect: 矩形の設定・演算
演算子 | 引数1 | 引数2 | 説明 | 例 |
---|---|---|---|---|
(なし) | 変数, 矩形 | (なし) | 矩形を指定 | var=rect:(0 0 100 200) |
+ – * | 変数, 矩形 | 変数, 数値, 矩形 | 加算 減算 乗算 (引数2が矩形の場合、成分ごとに演算。数値の場合、全ての成分に対して同じ演算を行う) | var=rect:var + (10 20 10 20) ※(10,20)オフセット移動 |
/ | 変数, 矩形 | 変数, 数値, 矩形 | 除算 (引数2が矩形の場合、成分ごとに演算。数値の場合、全ての成分に対して同じ演算を行う) (除算する値が0の場合は該当する引数1の値をそのまま返す) | var=rect:var / (2 2 0 0) ※左上座標のみ半分の値に |
& | 変数, 矩形 | 変数, 矩形 | 交差部分の取得(Intersect) | var=rect:var & @screen ※スクリーンサイズに収まるよう切り抜き |
| | 変数, 矩形 | 変数, 矩形 | 両方の矩形を含む最小の矩形を取得(Union) | var=rect:var | @lastmatch ※画像認識位置を含むように拡張 |
str: 文字列の設定・演算
演算子 | 引数1 | 引数2 | 説明 | 例 |
---|---|---|---|---|
(なし) | 変数, 数値, 矩形, 文字列 | (なし) | 文字列を指定 | var=str:”文字列” |
+ | 変数, 数値, 矩形, 文字列 | 変数, 数値, 矩形, 文字列 | 文字列を結合 | var=str:var + “\n” ※改行を追加 |
sub | 変数, 文字列 | 矩形 | 引数1の文字列を引数2(la ln ca cn)の範囲に従って切り出し ln>0の時、行オフセットlaからln行抽出(※laがマイナスの場合、抽出開始行は末尾から-la行遡った位置) cn>0の時、文字オフセットcaからcn文字抽出(※caがマイナスの場合、抽出開始位置は末尾から-ca文字遡った位置) | var=str:var sub (1 2 3 4) ※文字列varの2~3行目を抽出し、その4文字目から4文字を抽出 var=str:var sub (a 1 0 0) ※文字列varの(a+1)行目を抽出 var=str:var sub (0 0 -5 5) ※文字列varの末尾5文字を抽出 |
idx | 変数, 文字列 | 変数, 文字列 | 引数1内に引数2の文字列が含まれる場合、その開始位置(冒頭:0) 引数1内に引数2が含まれない場合は-1 | var=str:”abcde” idx “cd” ※varには数値2が格納されるvar=str:”abcde” idx “f” ※varには数値-1が格納される |
replace | 変数, 文字列 | 変数, 文字列 | 格納先の変数に含まれる文字列のうち引数1にマッチするものをすべて引数2に変換する(正規表現) ※格納先変数を参照するため注意 | var=str:”12:34;” var=str:”[;:]” replace “” ※varには”1234″が格納される |
read | 変数, 文字列 | (なし) | 引数1に指定されたファイルパスの内容を読み込む(最大1MB) ※FRep2アプリがアクセス可能なファイルである必要 | var=str:”/sdcard/test.txt” read ※ファイル内容をvarに格納 |
特殊なコード
コード | 引数1 | 引数2 | 説明 | 例 |
---|---|---|---|---|
toast: | 変数, 数値, 矩形, 文字列 | (なし) | 指定した内容をポップアップ表示 | toast:”メッセージ” |
clean: | (なし) | (なし) | システム変数を除く全ての変数を消去 | clean: |
If文 / Switch用比較演算子
比較演算子 | 値1,値2 例 | 説明 |
---|---|---|
== != | 変数, 数値, 矩形, 文字列 | 内容が同一かどうかを判定 |
and:var == “文字列” and:@loop == 0 and:var == | varの内容が文字列なら成功 ループ内開始後~終了前なら成功(ループ0回目) varが定義されていなければ成功 (変数がnull(空)かどうか, 初回再生時の判定) | |
> >= < <= | 変数, 数値 | 数値の大小を判定 |
and:var > 0 | varの内容が0より大きければ成功 | |
& | 変数, 数値, 矩形 | 数値の場合、ビットAND演算の結果が0でなければ成功 矩形の場合、2つの矩形が一部でも重なれば成功 |
and:var & 5 and:r & @lastmatch | varとビット演算ANDを行い0でなければ成功 画像認識結果が矩形rと重なる部分があれば成功 | |
]= | 変数, 矩形, 文字列 | 矩形の場合、値1の範囲と値2が一致、または 値1の範囲に値2の範囲が完全に含まれると成功 文字列の場合、値1の文字列内に値2の文字列が 含まれると成功 |
and:r ]= @lastmatch and:var ]= “ok” | 矩形r内で画像認識されていれば成功 varに文字列okが含まれれば成功 |