发表在 编程少年官方部落 01-23 19:28:03
/*********************************************************************************
© ClipCC开发团队
FileName: Eval.js
Author: hdz2007
Version: v1.0
Date: 180123
Description: 调用 js 的 Eval
**********************************************************************************/
var evalRes = ''; // eval 函数得到的结果
// 手工实现 startwith
String.prototype.startWith=function(str) {
if(str==null||str==""||this.length==0||str.length>this.length)
return false;
if(this.substr(0,str.length)==str)
return true;
else
return false;
return true;
}
////////////////////////////////////////////////////////////////////////////////////////////
var http = require('http');
http.createServer(function(req, res) {
if(req.url.startWith('/setEvalString')) {
evalRes = req.url.split('/')[3];
evalRes = decodeURIComponent(evalRes.toString());
//console.log(evalRes);
evalRes = eval(evalRes);
}
else if(req.url == '/poll') {
res.write('getEvalResult '+evalRes);
}
res.end();
}).listen(123456);
//console.log('localhost:58394 Eval 监听中...');
// 捕获全局异常
process.on('uncaughtException', function (err) {
console.error('An uncaught error occurred!');
console.error(err.stack);
});
啊,上面是Eavl核心(Eavl.js),这是一个可以在sc计算表达式的模块(不是自定义)
下面是Eavl.s2e文件
{
"extensionName": "表达式运算-ClipCC特别版",
"extensionPort": 123456,
"blockSpecs": [
["w", "计算 %s", "setEvalString"],
["r", "返回结果", "getEvalResult"],
]
}
找个文件夹新建这两个文件写进去数据保存,然后安装node.js,新建bat文件:
run.bat
node ./"Eval.js"
启动后不要关闭黑窗口
之后百度Scratch载入扩展模块,导入即可
(部分内容来自科技传播坊 李泽,侵删)