Как перемещать объекты в canvas? 
		
		
		
		Помогите разобраться с перемещением квадрата. Чтобы он не растягивался, а перемещался. 
	
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var x = 10;
var y = 10;
function draw(){
ctx.fillStyle = "green";
ctx.fillRect(x,y,15,15);
x++;
window.requestAnimationFrame(draw);
}
draw();
http://jsfiddle.net/g0Lmfygu/  | 
	
		
  | 
	
		
 Dimaz, 
	нужно очищать канвас(или его часть) перед каждым перемещением объекта. 
<canvas id="myCanvas" width="400" height="400"></canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var x = 10;
var y = 10;
function draw(){
    ctx.clearRect(0,0, 400, 400);
    ctx.fillStyle = "green";
    ctx.fillRect(x,y,15,15);
    x++;
    window.requestAnimationFrame(draw);
}
draw();
</script>
//однажды я задал подобный вопрос на этом форуме, а какой-то гнидос меня протроллил так и не ответив(  | 
	
		
 Цитата: 
	
  | 
	
		
 Sweet, ответил в лс. 
	 | 
	
		
 Цитата: 
	
 
function draw(){
ctx.fillStyle = "green";
ctx.fillRect(x,y,15,15);
ctx.clearRect(x-1,y,1,15);//очищаем
x++;
window.requestAnimationFrame(draw);
}
 | 
	
		
 Ты не поверишь, но обычно все так и делается. Иногда делается несколько слоев-канвасов, если очень уж не хочется что-то перерисовывать. Не надо преждевременной оптимизации, добейся первых тормозов, а потом ищи узкие места, а то запутаешься там, где до готового результата будет как до Китая. 
	 | 
	
		
 Dimaz, 
	Цитата: 
	
 А вот допустим у тебя такая ситуация: на твоём холсте over 9000 всяких объектов и они постоянно куда-то движутся. Что тогда сделаешь? Ну и как сказал товарищ выше - сначала добейся тормозов и только потом оптимизируй.  | 
	
		
 А вот здесь 
	http://threejs.org/examples/#canvas_geometry_hierarchy или здесь http://threejs.org/examples/#canvas_lines тоже каждый раз полностью очищается канвас и каждый элемент рисуется заново?  | 
| Часовой пояс GMT +3, время: 05:34. |