EaselJS:在AlphaMaskFilter中使用updateCache()时拖动蒙版
问题描述:
我使用一个导入的PNG与我设置为一个蒙板,它显示它分配给它的位图的蒙版。蒙版对象是可拖动的(有点像手电筒)。我知道我应该使用AlphaMaskFilter作为过滤器之一,我知道我应该使用.updateCache()...我只是不确定我是否正确使用它们?EaselJS:在AlphaMaskFilter中使用updateCache()时拖动蒙版
var stage;
var assetQueue;
var bg;
var bgMask;
var container;
var amf;
$(document).ready(function(){
loadImages();
});
function loadImages()
{
// Set up preload queue
assetQueue = new createjs.LoadQueue();
assetQueue.addEventListener("complete", preloadComplete);
assetQueue.loadManifest([{id:"img_bg",src:"images/Nintendo-logo-red.jpg"}, {id:"img_bg_mask",src:"images/background_mask.png"}]);
}
function preloadComplete()
{
assetQueue.removeEventListener("complete", preloadComplete);
init();
}
function init()
{
stage = new createjs.Stage("stage_canvas");
setBackgrounds();
sizeStage();
$(document).mousemove(function(evt){
trackMouse(evt);
});
}
function trackMouse(evt)
{
var mouseX = evt.pageX;
var mouseY = evt.pageY;
// Move the containing clip around
container.x = mouseX - (bgMask.image.width/2);
container.y = mouseY - (bgMask.image.height/2);
// Offset the position of the masked image.
bg.x = -container.x;
bg.y = -container.y;
container.updateCache();
stage.update();
}
function setBackgrounds()
{
bg = new createjs.Bitmap(assetQueue.getResult("img_bg"));
bgMask = new createjs.Bitmap(assetQueue.getResult("img_bg_mask"));
container = new createjs.Container();
container.addChild(bg);
amf = new createjs.AlphaMaskFilter(bgMask.image)
container.filters = [amf];
container.cache(0, 0, bg.image.width, bg.image.height);
stage.addChild(container);
stage.update();
}
function sizeStage()
{
var windowW = 600;
var windowH = 600;
stage.canvas.width = windowW;
stage.canvas.height = windowH;
stage.update();
}
答
已找到解决方案(对任何有兴趣的人)。关键是要将要掩盖的图像添加到容器中。将容器移动到您想要的任何位置,然后在容器内偏移所包含的图像。代码已经更新以反映这一点。