【发布时间】:2015-08-07 12:55:30
【问题描述】:
我在 html5 画布的 javascript 中使用 globalCompositeOperation 时遇到问题。
https://jsfiddle.net/6j51kxeh/
我正在使用“destination-in”在心的精灵中画一个黑色方块,所以当玩家错过那颗心时,它会显示出来。它可以很好地绘制黑色的心,但它会在其他所有内容之上绘制白色。如果您注释掉 globalCompositeOperation 行,您将看到它被绘制在其他事物之上(只是来自同一个精灵表的一组随机精灵)。感谢您的帮助。
我在链接到 jsfiddle 时也遇到了问题,我已经玩完了。
var canvas = document.createElement("canvas");
canvas.height = window.innerHeight;
canvas.width = window.innerWidth;
var scale = 4;
document.body.appendChild(canvas);
var draw = canvas.getContext("2d");
draw.imageSmoothingEnabled = false;
draw.mozImageSmoothingEnabled = false;
draw.oImageSmoothingEnabled = false;
draw.webkitImageSmoothingEnabled = false;
var assetsToLoad = [];
var assetsLoaded = 0;
var sprites = new Image();
sprites.onload = loadHandler;
sprites.src = "https://dl.dropboxusercontent.com/u/38825680/Site/images/sprites.png";
assetsToLoad.push(sprites);
function loadHandler() {
assetsLoaded++;
if(assetsLoaded === assetsToLoad.length) {
console.log(assetsLoaded + " asset[s] loaded");
Draw();
}
};
function Draw() {
draw.save();
draw.scale(scale,scale);
draw.drawImage(sprites,0,64,64,64,0,0,64,64);
// draw.drawImage(sprites,112,80,16,16,0,0,16,16);
draw.fillStyle = "black";
draw.fillRect(0,0,16,16);
//draw.globalCompositeOperation = "destination-in";
draw.drawImage(sprites,96,48,16,16,0,0,16,16);
draw.restore();
}
【问题讨论】:
标签: javascript html canvas alpha masking