我在CodePen上发现了一点点confetti generating JavaScript。它由一个简单的:
调用(function() {
// Confetti code here
}).call(this);
效果很好,但我希望在某个时刻手动调用它。
我尝试将它放在一个函数中,就像这样(删除上面的两条包装线):
function confetti() {
// Confetti code here
}
然后调用该函数,但什么也没发生。不明白为什么。有问题的代码可以在这里看到:http://codepen.io/linrock/pen/Amdhr
更新
看来我的代码被触发了。它完全与匿名功能无关。出于某种原因,它只会在浏览器调整大小时栩栩如生 - 这完全是另一个问题。怪异。
现在不确定这个问题是什么 - 这里的解决方案与实际问题无关。 (所描述的问题从一开始就不存在: - /)
答案 0 :(得分:3)
你很接近,你所展示的尝试就是没有调用它;
function confetti() {
// pass
}
confetti.call(this);
但是,如果您想在其他地方使用它,我不会认为this
将是相同的,所以相反我会写
var confetti = (function () {
// pass
}).bind(this);
confetti();
上的文档
答案 1 :(得分:1)
允许您触发动画的功能称为step
。您只需要从代码中删除它的调用。所以没有:
window.step = function() {
var c, j, len, results;
requestAnimationFrame(step);
context.clearRect(0, 0, w, h);
results = [];
for (j = 0, len = confetti.length; j < len; j++) {
c = confetti[j];
results.push(c.draw());
}
return results;
};
step();
你有
window.step = function() {
var c, j, len, results;
requestAnimationFrame(step);
context.clearRect(0, 0, w, h);
results = [];
for (j = 0, len = confetti.length; j < len; j++) {
c = confetti[j];
results.push(c.draw());
}
return results;
};
现在你只需要一些可以手动触发它的东西:
step();