好吧,我敢肯定,这是不可能的,但也许有人能想到的效果整齐的组合,可以做到这一点的:从下面掩盖AS3,保持掩码可见?
我希望有一个[大型,复杂]影片剪辑充当遮罩到它上面的另一个影片剪辑,并且不会自行消失。
问题的关键在于让用户将各种对象拖放到角色上,并让它们出现在“皮肤上”,因此只有在角色动画片段所在的位置才能看到。 以前我通过创建一个与角色形状相同的面具来完成这个任务,但是这次角色MC非常复杂而且动态,这是不可行的。
是否有一个简单的方法来动态复制复杂的MC,并使该面具?有没有办法使用负空间而不是内容来擦除擦除过滤器?想法?
编辑:
起初下面的答案是行不通的,由于高像素化和扩展性问题,但我可以通过绘制父改为让平滑的建议,以及大量的修修补补来解决这些。
// remove old bitmap to replace with new one as needed
if(grl.tempContainer.numChildren >= 1){
grl.tempContainer.removeChildAt(0);
}
// make hair disappear so only visible skin is part of mask
grl.hair.cacheAsBitmap = true;
grl.hair.blendMode = 'erase';
grl.hair2.alpha = 0;
grl.ponytail.alpha = 0;
grl.body.braids.alpha = 0;
grl.filters = [];
grl.body.filters = [];
// create bitmap copy of the character
var bmd:BitmapData = new BitmapData(400, 600, true, 0);
bmd.draw(this.parent);
var clone:Bitmap = new Bitmap(bmd);
clone.cacheAsBitmap = true;
clone.smoothing = true;
grl.tempContainer.addChild(clone);
// undo the scaling effects that were on girl to revert to parent scaling/position
clone.scaleX = 1/grl.scaleX;
clone.scaleY = 1/grl.scaleY;
clone.x = -(clone.width)/2;
clone.y = -(75/(grl.scaleY));
grl.draggieContainer5.cacheAsBitmap = true;
grl.draggieContainer5.mask = clone;
// reset character to look normal again
grl.hair.blendMode = 'normal';
grl.hair2.alpha = 1;
grl.ponytail.alpha = 1;
grl.body.braids.alpha = 1;
grl.filters = filterHolder.filters;
grl.body.filters = filterHolder.filters;
好吧,这绝对似乎是朝着正确的方向=) 我试图将它集成到我的代码。因为我已经有了MC,所以我没有使用第一部分。因为我已经有了我的“draggieContainer”,所以我只使用最后一节的蒙版行。 但我在中间遇到各种各样的麻烦..拖动新项目时,第一次没有任何反应。接下来的一轮将会有一个巨大的,不透明的矩形形状,其中包含我的角色,白色背景和draggie对象。我认为这可以工作..我只需要解决这些问题.. –
我的角色没有注册点在左上角,这是伤害我的大脑哈哈... –
BitmapData构造函数中的第三个参数是布尔值为透明度。您可以将其更改为true以删除白色背景。 – Karmacon