JavaScript函数在我第一次调用它时才起作用?
我想知道你们能否帮我解决一个问题。希望识别问题不需要查看我正在使用的图形包的文档,但如果查看了,请看: 我有以下代码块JavaScript函数在我第一次调用它时才起作用?,javascript,Javascript,我想知道你们能否帮我解决一个问题。希望识别问题不需要查看我正在使用的图形包的文档,但如果查看了,请看: 我有以下代码块 window.setInterval(function() { mycirc.transform("t1,1"); }, 500); 这当然应该每半秒调用函数mycirc.transform(“t1,1”)。该函数应该将mycirc的x和y坐标分别平移1个单位(查看上的Element.transform([tstr]) 然而,当我测试我的页面时,mycirc被翻译一次
window.setInterval(function()
{
mycirc.transform("t1,1");
}, 500);
这当然应该每半秒调用函数mycirc.transform(“t1,1”)
。该函数应该将mycirc
的x和y坐标分别平移1个单位(查看上的Element.transform([tstr])
然而,当我测试我的页面时,mycirc
被翻译一次,随后的调用没有效果。我使用console.log(…)
测试并确保:
window.setInterval(function()
{
var bb = mycirc.getBBox();
console.log("coords before transformation: " + bb.x + "," + bb.y);
mycirc.transform("t1,1");
var bb = mycirc.getBBox();
console.log("coords after transformation: " + bb.x + "," + bb.y);
}, 500);
屈服
coords before transformation: 120.98508107696858,106 jsfunctions.js:411
coords after transformation: 121.98508107696858,107 jsfunctions.js:414
coords before transformation: 121.98508107696858,107 jsfunctions.js:411
coords after transformation: 121.98508107696858,107 jsfunctions.js:411
等等
知道为什么会这样吗
(我试图查看图形包的源代码,但由于没有空格,无法阅读。)您的代码
mycirc.transform("t1,1");
与当前状态无关。它只是从原始状态转换到t1,1
,然后从t1,1
转换到t1,1
等等
每次都应该计算变换
编辑:因此它需要一个全局变量,每次递增,如:
var xyPos = 1;
window.setInterval(function()
{
mycirc.transform("t"+xyPos+","+xyPos);
xyPos++;
}, 500);
在链接的文档的“使用”部分中,它显示了如何预处理和附加转换。对我来说,这意味着您的代码每次都会将转换重置为相同的内容。我从未使用过这个图形库,所以我不能肯定,但请尝试以下方法,看看它是否有效:
mycirc.transform("t1,1");
mycirc.transform("...t1,1");
mycirc.transform("...t1,1");
mycirc.transform("...t1,1");
我相信这将应用相同的转换4次。当然,您需要将此逻辑转换为一个间隔以供使用。我认为这是预期的行为。引用文件: 将转换添加到与其他元素分离的元素 属性,即平移不会更改矩形的x或y 尝试:
var amount = 1;
window.setInterval(function()
{
mycirc.transform("t" + [amount, amount].join(','));
amount++;
}, 500);