Open sucutey opened 7 months ago
let keywords={//部分关键字
"init": "console.show();\n let $ =require('/sdcard/脚本/tools.js');\n function main(){\n\n}\n while(true){\n main();\n sleep(1000);\n}\n",
"down": "events.observeKey();events.onKeyUp('volume_down', function() {toast('音量下键被按下了')}",
"up": 'events.observeKey();\n events.onKeyDown("volume_up", function(event){\n toast("音量上键被按下了");\n }); \n',
"on": 'events.broadcast.on("say",function(str){\ntoast(str)\n})\n;setInterval(()=>{},1000)\n',
'emit': 'events.broadcast.emit("say","hello");\n',
}
let keys_arr = Object.keys(keywords);//关键字数组
function main() {//实现
let editor = pickup(id('code_edit_text'));//编辑器控件
if (editor) {
let code = editor.text();//代码
code.length === 1 && editor.setText(keywords["init"]);//初始化操作
if (code.includes("#")) {//节约开销
keys_arr.forEach(myKey => {//遍历关键字数组
let key = myKey + "#";//附加标记符 #
if (code.includes(key)) {//关键字替换操作
editor.setText(code.replace(key, keywords[myKey]));
}
})
}
}
}
我写了一个辅助手机开发的代码,每次写脚本之前我都要运行这个脚本,每一次都要翻找
//自动拼接 例子,分析控件,复制bounds(52, 288, 668, 788),读取剪切板,如果包含bounds(x, x, x, x),直接根据剪切板的bounds属性找到该控件,然后根据找到的控件可用属性(id,text等)拼接成一条语句(toast出来),再设置回剪切板,劫持音量下键,改成按一下就粘贴
(ps:有缺点,如果父子控件的bounds相同,只能找到父控件的属性,找不到子控件)
//代码初始化 监控autojs6编辑器文本内容(text)长度,如果长度为0(没写代码),长度==1(随便按一下,比如空格)就自动输入我设定的初始化代码,顺便再点击一下保存按钮(可以实现自动导入自定义脚本文件,自动创建日志输出路径,简化内置函数(比如let p =pickup)等等,每次写新脚本都要写一次的代码)
//关键字手动补全 如果我剪切板是某个函数或者关键字,比如for,设置剪切板内容for(let i =0;i<len;i++){ },或者是剪切板关键字是 找色,把findColors函数设置到剪切板,劫持音量键粘贴
//关键字自动补全 或者可以更加智能,自动在编辑器界面替换关键字部分而不改动其他代码(给关键字后面加个#什么的特殊字符,然后通过正则只替换关键字部分)比如threads#替换成threads.start(()=>{while(true){}}),替换完成再自动输入到编辑器界面 ........ 虽然可以自动执行,但是有可能劫持了某些系统事件,不希望它一直在后台运行,希望可以出一个代码列表置顶功能,需要频繁运行的脚本可以一堆脚本中,更容易的找到
可以在后续版本中考虑加入上面提及的功能,比如代码初始化,自定义关键字,虽然有些简陋考虑不周全,毕竟在autojs是运行在手机上的自动化应用