Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2014, 06:18
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Как нарисовать одновременно два квадрата
Подскажите пожалуйста

<!DOCTYPE html>
<html>
<body>
<canvas id="canvas" width="300" height="300" style="outline:1px solid #d3d3d3;">
  <script>
  window.onload = function()
  {
		  var Mcanvas = document.getElementById("canvas").getContext("2d");
					var m = 0;
					Mcanvas.clearRect(0,0,300,300)
					Mcanvas.lineStyle = "#109bfc";
					Mcanvas.lineWidth = 1;
					Mcanvas.beginPath();
					Mcanvas.moveTo(0,0);
				
					var SI = setInterval(function()
						{ 
							m++
							switch(m){
							case 1: Mcanvas.lineTo(0,100); break;
							case 2: Mcanvas.lineTo(100,100);  break;
							case 3: Mcanvas.lineTo(100,0); break;
							case 4: Mcanvas.lineTo(0,0); break;
							}
							Mcanvas.stroke();
						
							
							if(m == 5)
							{
								clearInterval(SI);
								Mcanvas.fillStyle = "rgb(78, 193, 243)";
								Mcanvas.fill();
								
								Mcanvas.beginPath();
								Mcanvas.moveTo(100,100);
						
								var SI2 = setInterval(function()
								{ 
									m++
									switch(m){
									case 6: Mcanvas.lineTo(100,200); break;
									case 7: Mcanvas.lineTo(200,200); break;
									case 8: Mcanvas.lineTo(200,100); break;
									case 9: Mcanvas.lineTo(100,100); break;
									}
									Mcanvas.stroke();
								
									
									if(m == 10)
									{
										clearInterval(SI2);
										Mcanvas.fillStyle = "rgb(78, 193, 243)";
										Mcanvas.fill();
									}
								},1000); 		
								
								
							}
						},1000); 		
		}
						
  </script>
</body>
</html>


Сейчас квадраты рисуются друг за другом, а надо сразу оба
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2014, 18:14
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Никто не знаеt?
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2014, 23:05
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Проблема собственно в чем? Рисуйте в одном интервале два квадрата.
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2014, 23:07
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ознакомился поближе. Бредокод. Сами написали или натырили?
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2014, 23:18
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Mcanvas.moveTo(0,0);

/*
это значит массив с массивами по 2 элемента в каждом:
первый (индекс 0) х, второй (индекс 1) у.
при этом каждый такой компонент имеет свой индекс, см ниже
*/
var corners=[  
	[0,100],
	[100,100],
	[100,0],
	[0,0]
 ];

for(var i=0;i<corners.length;i++)
	Mcanvas.lineTo(corners[i][0],corners[i][1]);

Mcanvas.stroke();
Mcanvas.fillStyle = "rgb(78, 193, 243)";
Mcanvas.fill();
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2014, 23:20
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Нарисуется мгновенно, да, чтобы постепенно через таймер выбираете компоненты массива точно так же, но без цикла. Чтобы 2 квадрата - просто делается второй массив corners2 со своими координатами, можно относительными corners, или считайте в таймере. В одном.

Но вообще-то так не делают в лучших домах лондОна и пАрижа. Пишут функцию которая по заданным в человеческом понимании размерам и точкой отсчета (origin). Функция сама дожна вычислить координаты и все такое.

Последний раз редактировалось kostyanet, 11.10.2014 в 23:24.
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2014, 23:39
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Что по твоему делает условие в приведенном тобой коде? «if(m == 5)»
p.s. Не слушай местных шутов код прост понятен и запускаем
но явно отсутствую элементарные знания о создании анимации
setInterval в анимации да и не только может приводить к весьма печальным последствиям

Последний раз редактировалось MallSerg, 11.10.2014 в 23:47.
Ответить с цитированием
  #8 (permalink)  
Старый 12.10.2014, 06:47
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

К каким именно печальным?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Нужно описать как работают два java script'a Smoke332 Общие вопросы Javascript 8 26.09.2010 16:13
добавить два слоя одновременно rt2517 Events/DOM/Window 2 03.05.2010 13:38
Sortable, два связанных списка. Как один из них сделать неизменяемым? kvecxjo jQuery 1 30.03.2010 03:15
Два accordion на сайт, можно как то сделать? Vitaly jQuery 3 09.11.2009 11:37