/*
软件作者:https://xuhss.com/oxox/pro
*/
"ui";
ui.layout(
<vertical>
<canvas layout_weight="1" id="canvas" />
<horizontal h="auto">
<button id="but_q" layout_weight="1" h="auto" text="清空"/>
<button id="but_c" layout_weight="1" h="auto" text="撤销"/>
<button id="but_s" layout_weight="1" h="auto" text="生成代码"/>
<button id="but_b" layout_weight="1" h="auto" text="保存至文件"/>
</horizontal>
</vertical>
);
var paint = new Paint;
//paint.setTextAlign(Paint.Align.CENTER);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.STROKE);
paint.setARGB(255, 0, 0, 0);
var textSize = 50;
paint.setTextSize(textSize);
var storage = storages.create("AJ动作录制");
//每次动作。
var MainGesturesAry =storage.get("gestures", new Array); //↓↓↓↓
//一次中的手指动作。
var gesturesAry = new Array; //↓↓↓↓[[0,100,[x1,y1],[x2,y2],[x3,y3],[x4,y4],………],………]
//每个手指的动作。
var TouchPointRecord = new Array; //[[0,1000,[x1,y1],………],………]
var TouchPointStart = new Array; //[[x1,y1],[x2,y2],[x3,y3],[x4,y4],………]
var TouchPointCurrent = new Array; //[[x1,y1],[x2,y2],[x3,y3],[x4,y4],………]
threads.start(function() {
console.show();
});
var Ts = 10; //动作精度。越小精度越高。//但实际上没卵用。自动操作函数gestures会自动缩减
var kg = false;
var jishi = 0;
//new android.graphics.RectF
setInterval(() => {
if (kg) {
jishi++;
for (let i = 0; i < TouchPointRecord.length; i++) {
let x = Math.floor(TouchPointCurrent[i][0]);
let y = Math.floor(TouchPointCurrent[i][1]);
TouchPointRecord[i].push([x, y]);
TouchPointRecord[i][1] += Ts;
};
};
}, Ts);
ui.but_q.click(function() {
MainGesturesAry = new Array;
});
ui.but_c.click(function() {
MainGesturesAry.pop();
});
ui.but_s.click(function() {
setClip("var gesturesAry=" + JSON.stringify(MainGesturesAry) + ";\nfor(let i=0;i<gesturesAry.length;i++){gestures.apply(null, gesturesAry[i]);sleep(100);}");
toast("已复制");
});
ui.but_b.click(function() {
threads.start(function() {
var p = dialogs.prompt("保存路径", storage.get("savePath","/sdcard/脚本/LZ动作.js"));
if (p) {
storage.put("savePath", p);
files.write(p, "var gesturesAry=" + JSON.stringify(MainGesturesAry) + ";\nfor(let i=0;i<gesturesAry.length;i++){gestures.apply(null, gesturesAry[i]);sleep(100);}");
};
});
});
events.on("exit", function() {
storage.put("gestures", MainGesturesAry);
//files.write("./组.js","var gesturesAry="+JSON.stringify(MainGesturesAry)+";\nfor(let i=0;i<gesturesAry.length;i++){gestures.apply(null, gesturesAry[i]);sleep(100);}");
});
ui.canvas.on("draw", (canvas) => {
canvas.drawARGB(255, 127, 127, 127);
var w = canvas.getWidth();
var h = canvas.getHeight();
var AX = w / 2;
var AY = h / 2;
paint.setStyle(Paint.Style.STROKE);
canvas.drawText(String(MainGesturesAry.length + "个动作"), 0, textSize, paint)
if (TouchPointStart.length) {
for (let i = 0; i < TouchPointStart.length; i++) {
try {
let X = TouchPointStart[i][0];
let Y = TouchPointStart[i][1];
let x = TouchPointCurrent[i][0];
let y = TouchPointCurrent[i][1];
X = X || 0;
Y = Y || 0;
x = x || 0;
y = y || 0;
let a = X - (x - X);
let b = Y - (y - Y);
//let rect = new android.graphics.RectF(X, Y, x, y);
//canvas.drawRect(rect, paint);
//let rect2 = new android.graphics.RectF(X, Y, a, b);
//canvas.drawRect(rect2, paint);
//let rect3 = new android.graphics.RectF(x, y, a, b);
//canvas.drawRect(rect3, paint);
//canvas.drawLine(X, Y, x, y, paint);
//canvas.drawLine(X, Y, a, b, paint);
canvas.drawText(String("A"), X, Y, paint)
canvas.drawText(String("B"), x, y, paint);
canvas.drawCircle(X, Y, 10, paint);
canvas.drawCircle(x, y, 10, paint);
//canvas.drawCircle(a, b, 10, paint);
} catch (e) {};
};
for (let ii = 0; ii < TouchPointRecord.length; ii++) {
let ge = TouchPointRecord[ii];
canvas.drawText(String(ge), 0, textSize * (ii + 2), paint)
for (let i = 2; i < ge.length - 1; i++) {
let X = ge[i][0];
let Y = ge[i][1];
let x = ge[i + 1][0];
let y = ge[i + 1][1];
X = X || 0;
Y = Y || 0;
x = x || 0;
y = y || 0;
//let a = X - (x - X);
//let b = Y - (y - Y);
//let rect = new android.graphics.RectF(X, Y, x, y);
//canvas.drawRect(rect, paint);
//let rect2 = new android.graphics.RectF(X, Y, a, b);
//canvas.drawRect(rect2, paint);
//let rect3 = new android.graphics.RectF(x, y, a, b);
//canvas.drawRect(rect3, paint);
canvas.drawLine(X, Y, x, y, paint);
//canvas.drawLine(X, Y, a, b, paint);
//canvas.drawText(String("A"), X, Y, paint)
//canvas.drawText(String("B"), x, y, paint);
//canvas.drawCircle(X, Y, 10, paint);
//canvas.drawCircle(x, y, 10, paint);
//canvas.drawCircle(a, b, 10, paint);
};
};
};
});
ui.canvas.setOnTouchListener(new android.view.View.OnTouchListener((view, event) => {
try {
var W = view.getWidth();
var H = view.getHeight();
var PC = event.getPointerCount();
switch (event.getActionMasked()) {
case event.ACTION_MOVE:
for (let i = 0; i < PC; i++) {
let id = event.getPointerId(i);
let X = event.getX(i);
let Y = event.getY(i);
TouchPointCurrent[i][0] = X;
TouchPointCurrent[i][1] = Y;
};
break;
case event.ACTION_CANCEL:
//log("CANCEL");
kg = false;
TouchPointStart = new Array;
TouchPointCurrent = new Array;
break;
case event.ACTION_OUTSIDE:
//log("OUTSIDE");
break;
default:
var I = Math.floor(event.getAction() / 256);
var ID = event.getPointerId(I);
var X = event.getX(I);
var Y = event.getY(I);
switch (event.getActionMasked()) {
case event.ACTION_DOWN:
//第一个手指按下。
//log("down");
kg = true;
TouchPointRecord.splice(I, 0, [0, 1, [Math.floor(X), Math.floor(Y)]]);
TouchPointStart.splice(I, 0, [X, Y]);
TouchPointCurrent.splice(I, 0, [X, Y]);
break;
case event.ACTION_UP:
//最后一个手指抬起。
//log("up");
kg = false;
jishi = 0;
gesturesAry.push(TouchPointRecord[I]);
MainGesturesAry.push(gesturesAry);
gesturesAry = new Arr