好吧,我敢肯定,這是不可能的,但也許有人能想到的效果整齊的組合,可以做到這一點的:從下面掩蓋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