我尝试在应该在点击事件上显示的画布上显示一些图像。一切似乎都没问题,但我发现了一些错误,我无法修复很长时间。问题是,第一张页面开启的灯图不显示。它可以通过以下步骤来再现:在浏览器图像添加到画布的奇怪行为
- 打开link;
- 点击即可图片< - 将显示清晰的矩形
- 再次点击。 < - 矩形将消失
- 再次点击。 < - 将显示带矩形的图像
为什么图像不能第一次显示?
我尝试在应该在点击事件上显示的画布上显示一些图像。一切似乎都没问题,但我发现了一些错误,我无法修复很长时间。问题是,第一张页面开启的灯图不显示。它可以通过以下步骤来再现:在浏览器图像添加到画布的奇怪行为
为什么图像不能第一次显示?
至少在代码中有一个(很常见)的错误。方法.onload
预计分配一个函数引用。您将其分配给立即函数调用processButtonImages(i, delta, buttons[i], object)
的结果(返回值)。所以只要你没有从这个函数调用返回函数引用(你不这样做),这将不会按预期工作。
您正在调用并设置图像onload事件。所以,起初它不能正确执行整个事情。检查这个jsfiddle。我在末尾编辑了代码,http://jsfiddle.net/sKymY/14/
嗯,其实我没有听清意思。那么,我应该写什么来返回引用? 它应该是这样的:'processButtonImages;''processButtonImages'函数结束时'返回processButtonImages;' – rdo
实际上,您现在不需要重新考虑您的语义。通常你可以这样做''按钮[i] .onload = function(){processButtonImages(i,delta,buttons [i],object)};'但是当你在循环中分配它时,它仍然会遭受同步问题由于关闭)。您需要“松开”循环或创建另一个(内部)闭包来处理循环索引 – devnull69
是的,问题出在这部分代码中。经过一些额外的调试后,我解决了它。谢谢! – rdo