SuperMonster003 / AutoJs6

安卓平台 JavaScript 自动化工具 (Auto.js 二次开发项目)
https://docs.autojs6.com
Mozilla Public License 2.0
2.16k stars 653 forks source link

[功能建议]添加代码列表置顶和代码初始化功能 #201

Open sucutey opened 7 months ago

sucutey commented 7 months ago

我写了一个辅助手机开发的代码,每次写脚本之前我都要运行这个脚本,每一次都要翻找

//自动拼接 例子,分析控件,复制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是运行在手机上的自动化应用

sucutey commented 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]));
                }
            })
        }
    }
}