我是 EaselJS 的新手,我有一个带位图的舞台,我需要添加绘画功能,以便可以在位图之上绘制形状。
paint 函数需要stage.autoClear = false来创建形状。此代码强制重绘舞台上的所有元素(包括位图)。但不应重绘舞台上现有的位图。
位图位于container中,它是stage的子级。这就是我所拥有的(大部分来自https://github.com/CreateJS/EaselJS/blob/master/examples/CurveTo.html):
function init() {
canvas = document.getElementById("theCanvas");
stage = new createjs.Stage(canvas);
createjs.Touch.enable(stage);
stage.enableMouseOver(10);
stage.mouseMoveOutside = true;
stage.addChild(container);
};
function initPaint() {
var oldPt;
var oldMidPt;
var color;
var stroke;
stage.autoClear = false;
stage.enableDOMEvents(true);
createjs.Ticker.framerate = 24;
stage.addEventListener("stagemousedown", handleMouseDown);
stage.addEventListener("stagemouseup", handleMouseUp);
stage.addChild(drawingCanvas);
stage.update();
};
function handleMouseDown(event) {
if(!event.primary) {return; }
stage.autoClear = false;
color = "#000000";
stroke = 20;
oldPt = new createjs.Point(stage.mouseX, stage.mouseY);
oldMidPt = oldPt.clone();
stage.addEventListener("stagemousemove", handleMouseMove);
}
function handleMouseMove(event) {
if (!event.primary) { return; }
var midPt = new createjs.Point(oldPt.x + stage.mouseX >> 1, oldPt.y + stage.mouseY >> 1);
drawingCanvas.graphics.clear().setStrokeStyle(stroke, 'round', 'round').beginStroke(color).moveTo(midPt.x, midPt.y).curveTo(oldPt.x, oldPt.y, oldMidPt.x, oldMidPt.y);
oldPt.x = stage.mouseX;
oldPt.y = stage.mouseY;
oldMidPt.x = midPt.x;
oldMidPt.y = midPt.y;
stage.update();
}
位图元素已添加到舞台中。当使用stage.autoclear = false调用initPaint时,位图会重新绘制,一个在另一个之上(这是显而易见的,因为我在位图上有阴影效果并且阴影不断变暗)。如何阻止重绘位图元素?
qq_遁去的一_1
相关分类