Показать сообщение отдельно
  #3 (permalink)  
Старый 19.01.2013, 04:46
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

9xakep, как-то так:
.bullet{
		width:10px;
		height:10px;
		background:#f00;
		position:absolute;
}

//массив объектов пуль
		var bulletObjs = [];
		
		function Bullet(x, y, vx, vy, gravity) {
			this.x = x;
			this.y = y;
			this.vx = vx;
			this.vy = vy;
			this.gravity = gravity;
			this.element = document.createElement("div");
			this.element.className = "bullet";
            this.update();
		};
		 
		Bullet.prototype.move = function () {
			this.x += this.vx;
			this.y += this.vy;
			this.vy += this.gravity;
			this.update();
		};
		
		Bullet.prototype.update = function() {
            this.element.style.left = this.x + "px";
            this.element.style.top = this.y + "px";
        };
		
		window.onload = function() {
		
			function game() {
				//основной интервал
				setInterval( function() {
					//при клике создаём объект - пуля 
					window.onclick = function() {
						var bullet = new Bullet(50, 700, 5, -20, 0.5);
						//и добавляем её в общий массив пуль
						bulletObjs.push(bullet);
						document.body.appendChild(bullet.element);
					}
					//если произведён выстрел
					if(bulletObjs.length > 0) {
						//пробегаем по всем пулям
						for(var i = 0; i < bulletObjs.length; i++) {
							//и вызываем метод движения для каждой пули
							bulletObjs[i].move();
							//если пуля залетела за пределы высоты экрана												
							if(bulletObjs[i].y >= window.innerHeight){
								//удаляем html - элемент с body
								document.body.removeChild(bulletObjs[i].element);
								// и из массива пуль
								bulletObjs.splice(i, 1);
							
							}
						}
					}
				}, 30);
			}
			
			game();
		
		};

Посмотреть в действии тут, работает при клике мыши.

Последний раз редактировалось JsLoveR, 19.01.2013 в 04:56.
Ответить с цитированием