в основном то, что я пытаюсь сделать, это создать «дождливую эффект» на холсте (точно не смотреть, как дождь на данный момент, но я сортирую, что позже)Добавить тот же элемент на холст несколько раз
Это мой JavaScript до сих пор:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
var canvas = document.getElementById("canvas");
cx = canvas.getContext("2d");
function rectangle (x, y, w, h) {
var randomx = Math.floor(Math.random() * canvas.width - 50);
var randomy = Math.floor(Math.random() * canvas.height - 100);
this.x = randomx || x || 0;
this.y = randomy || y || 0;
this.w = w || 0;
this.h = h || 0;
this.draw = function() {
cx.fillStyle = "blue";
cx.fillRect(this.x, this.y, this.w, this.h);
};
}
var myRectangle = new rectangle(window.randomx, window.randomy, 10, 10);
function loop() {
cx.clearRect(0, 0, canvas.width, canvas.height);
myRectangle.y++;
myRectangle.draw();
requestAnimFrame(loop);
}
loop();
в основном, это создаст 10 по 10 синему блоку в случайных у и х точек холста, что мне нужно сделать, это держать добавить этот синий блок снова и снова на холст. Я попытался в том числе это цикл в функцию «петля»:
for (var i = 0; i < 20; i++) {
var myRectangle = new rectangle(window.randomx, window.randomy, 10, 10);
}
Но это только продолжает мигать блок в случайных точках (я понимаю, почему это происходит потому, что он держит перезапись переменных и поместить его в новой точке), сможет ли кто-нибудь помочь мне? Я знаю, что было бы проще использовать jQuery для этого, но я использую только JavaScript
Вот скрипка для того, как она выглядит на данный момент (без цикла for), заранее!
сделать массив прямоугольников. 'myRectangle [i] = новый прямоугольник (...)' вместо этого. –
@MarcB: Я обновил его, чтобы сделать именно это. http://jsfiddle.net/8Jqzx/1/ –
О, я вижу! @MarcB и CoreyOgburn Спасибо вам большое, если вы включите свой комментарий в ответ, я приму это! Еще раз спасибо –