我使用的是使用OpusScript(一种ECMA-262 JS)的软件工具(Opus Pro-Digital Workshop-UK)。我已经创建了一个eval函数,不确定如何创建结果。它工作正常,但有很多在线提到使用eval函数的问题。所以,我发布了这个函数,并希望在没有eval的情况下重新编写它,如果可能的话:
//len = 36 //puzzle pieces-F1-F36
function combiner10(len){
s200 = new Array(214,401,607,791,977,1132,1140,1141,1142,1143,1146,1057,916,760,611,465,312,175,75,77,77,77,77,65,186,364,631,837,1035,1067,218,219,223,220,1158,1152);
s300 = new Array(56,58,63,67,66,69,208,320,463,565,647,704,704,704,702,701,699,701,703,581,457,328,202,74,694,700,698,696,701,697,566,448,335,201,533,374);
for (var i=1;i<=len;i++)
eval("F"+i+".SetPosition(s200[i-1],s300[i-1])");
}
我是脚本编写的新手。 任何帮助表示赞赏。
答案 0 :(得分:0)
我认为你根本不需要在这里使用eval()
。
将您的碎片放入一个数组中,而不是名为F1-F36的变量,只需使用包含每个碎片的数组即可。然后你可以这样做:
var pieces = [puzzle pieces F1-F36 in this array]; // F1 in the 0 position
function combiner10(len){
var s200 = [214,401,607,791,977,1132,1140,1141,1142,1143,1146,1057,916,760,611,465,312,175,75,77,77,77,77,65,186,364,631,837,1035,1067,218,219,223,220,1158,1152];
var s300 = [56,58,63,67,66,69,208,320,463,565,647,704,704,704,702,701,699,701,703,581,457,328,202,74,694,700,698,696,701,697,566,448,335,201,533,374];
for (var i = 0; i < len; i++) {
pieces[i].SetPosition(s200[i],s300[i]);
}
}
此外,应在其前面用var
声明局部变量。