2017-05-01 33 views
0

所以我目前正在嘗試在圖像之間進行一次圖像間的碰撞測試,但我並不理解某些行爲。當粘貼圖像數據時保持透明

canvas

我getImageData抓取圖像部分,並嘗試將其粘貼到另一個座標。但透明度並不一致。 imageData對象數據數組告訴我,那些第一個像素沒有不透明性,導致alpha通道設置爲0.那麼,爲什麼當我粘貼回來,我得到那些白色像素?

function checkColisions(c, s, x, y) { 
    let canvasSection = c.ctx.getImageData(x, y, s.width, s.height); 

    for (let i=0; i<canvasSection.data.length; i+=4) { 
     if (canvasSection.data[i+3] == 255 && s.data[i+3] == 255) { 
      c.ctx.putImageData(s, x, y); 
      return false; 
     } 
    } 

    c.ctx.putImageData(s, x, y); 

    return true; 
} 

c是畫布類與畫布對象在它

s是圖像的ImageData對象

x和y是其中i要粘貼位置

+1

putImageData將覆蓋實際的像素值,而不是添加到它們。你可能想看看drawImage:https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage – Art

+0

真棒男人thx。如果你想得分,請將你的答案作爲解決方案。我認爲這可以通過將imageData轉換爲圖像然後使用它來完成,但在我的情況下,您的解決方案工作得很好。 – Goamaral

+0

嗯,不介意我做:-)很高興聽到它幫助! – Art

回答

相關問題