html5 canvas - EaselJS: Using updateCache() with AlphaMaskFilter When Dragging Mask -
i'm using imported png alpha gradient i'm setting mask reveals bitmap assigned to. mask object draggable (kind of flashlight). know i'm supposed use alphamaskfilter 1 of filters, , know i'm supposed use .updatecache()... i'm not sure i'm using them correctly?
var stage; var assetqueue; var bg; var bgmask; var container; var amf; $(document).ready(function(){ loadimages(); }); function loadimages() { // set 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 containing clip around container.x = mousex - (bgmask.image.width / 2); container.y = mousey - (bgmask.image.height / 2); // offset position of 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(); }
solution found (for interested). key add image want mask container. move container position want, offset contained image within container. code has been updated reflect this.
Comments
Post a Comment