0
所以我目前正在嘗試在圖像之間進行一次圖像間的碰撞測試,但我並不理解某些行爲。當粘貼圖像數據時保持透明
我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要粘貼位置
putImageData將覆蓋實際的像素值,而不是添加到它們。你可能想看看drawImage:https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage – Art
真棒男人thx。如果你想得分,請將你的答案作爲解決方案。我認爲這可以通過將imageData轉換爲圖像然後使用它來完成,但在我的情況下,您的解決方案工作得很好。 – Goamaral
嗯,不介意我做:-)很高興聽到它幫助! – Art