Some notes:
- both masker and maskee need to set cacheAsBitmap to true
- have to use transparent png or transparent swf file for masker, no jpg
- call setMask after loadMovie finished
- maskee can be multiple layers. Only need to setMask on top layer.
Sample code:
/*this.createEmptyMovieClip("mask_mc", 2); mask_mc.createEmptyMovieClip("mask_submc", mask_mc.getNextHighestDepth()); mask_mc.cacheAsBitmap = true; mask_mc.mask_submc.beginFill(0xfff000); mask_mc.mask_submc.moveTo(0, 100); mask_mc.mask_submc.lineTo(200, 100); mask_mc.mask_submc.lineTo(200, 300); mask_mc.mask_submc.lineTo(0, 300); mask_mc.mask_submc.lineTo(0, 100); mask_mc.mask_submc.endFill();*/ attachMovie("masker","mask_mc", 2); mask_mc.cacheAsBitmap = true; this.createEmptyMovieClip("mcCharMask", 1) mcCharMask.loadMovie("a.png"); this.onEnterFrame = function(){ if(mcCharMask.getBytesLoaded() >= mcCharMask.getBytesTotal() && mcCharMask.getBytesLoaded() > 0){ delete this.onEnterFrame; // set cacheAsBitmap before setMask. Sometime cacheAsBitmap value changes after loadMovie mcCharMask.cacheAsBitmap = true; mask_mc.setMask(mcCharMask); /*mask_mc.createEmptyMovieClip("mask_submc1", mask_mc.getNextHighestDepth()); mask_mc.mask_submc1.beginFill(0xff0000); mask_mc.mask_submc1.moveTo(0, 200); mask_mc.mask_submc1.lineTo(200, 200); mask_mc.mask_submc1.lineTo(200, 300); mask_mc.mask_submc1.lineTo(0, 300); mask_mc.mask_submc1.lineTo(0, 200); mask_mc.mask_submc1.endFill();*/ } }