2013-04-09 2 views
0

Есть ли способ очистить холст (html5) только от 1 элемента? У меня есть движущееся изображение на холсте, и когда я стираю изображение, цвет фона идет тоже. Есть ли способ просто удалить изображение, а не весь фон. Мой фон просто прост, но в будущем это будет сложнее.удалить часть движущегося изображения

Это также сложно, потому что нет способа получить изображение x, y pos из свойства.

ClassLoadImages.prototype.m_move = function(){ 
    this.x=++img1_x; 
    this.y=++img1_y; 
    //img1_x++; 
    //img1_y++; 
    // alert(img.x); 
     ctx.drawImage(img.imgElement, this.x, this.y); 
    // ctx.fillText("finished loading " ,10,40); 
    }; 


function doGameLoop() { 

    ctx.clearRect(0,0,600,400); 
    img.m_move(); 
    if (img.x>30) 
    { 
      clearInterval(gameLoop); 

    } 
} 




    var img= new ClassLoadImages('images/image4.jpg'); 
gameLoop = setInterval(doGameLoop, 100); 
</script> 

ответ

2

Простой ответ нет. Холст представляет собой плоское растровое изображение, а не слоистую коллекцию объектов. Как только вы рисуете, вы теряете фон за то, что вы рисуете.

Вы можете попытаться реализовать эту функцию самостоятельно, записав шаги, которые вы использовали для создания холста, и заново создайте его с соответствующим изображением или без него.

+0

так что решение состоит в том, чтобы снова перерисовать весь холст? – jagguy

+0

Да, я бы так сказал. Если вы не можете понять, как просто перерисовать бит позади изображения, которое вы хотите удалить. Но в любом случае вам придется отслеживать элементы на холсте. –

+0

@jagguy - посмотрите на http://kineticjs.com/ и посмотрите, есть ли у него функция делать то, что вы хотите. Я только кратко посмотрел на него и добавил его в закладки для будущего использования. –

Смежные вопросы