2012-09-06 42 views
2

是否可以使用as3補間進行弱褪色淡入淡出alpha?as3使用補間的褪色淡入淡出效果

我想,也許http://www.greensock.com可能具有的答案,但我什麼也沒找到。我希望圖像能夠逐漸從另一側消失。軟溶解。

我想,也許它可以使用掩模,但我不認爲口罩接受阿爾法否則這是可以做到這樣。

+0

如果解決了問題,您應該接受答案。 – Gio

+0

嗨吉奧,對不起,我離開了我的電腦。我沒有機會去測試它。我感謝你的工作。我相信這會做到。我會在接受測試時接受答案。再次非常感謝這個偉大的例子和努力! –

+0

很高興幫助。我沒有投票給你,這是我的投票。 – Gio

回答

1

其實蒙版允許alphas。這是一種黑客。你應該嘗試在代碼中寫的:

maskMC.cacheAsBitmap = true; 
objMC.cacheAsBitmap = true; 
objMC.mask = maskMC; 

哪裏objMC是你的動畫影片剪輯和maskMC是你的面膜含有與透明度漸變的形狀。這裏看一個例子:Link

您也可以使用實現這個使用GreenSock效果。代碼是這樣的:

TweenLite.to(objMC, 1, {"alpha":0, "x":objMC.x + 10}); 

使用TweenLite的,你需要提供對象的動畫,動畫的持續時間和Object類的一個實例(這是東西,我們花括號之間寫)。這個實例包含了我們想要逐漸改變的所有值。

0

您可以使用ALPHA blendmode來完成此操作。

使具有梯度,其阿爾法從全去什麼形狀,然後使它的混合模式ALPHA,把它作爲你的項目,你想掩蓋同一容器中。

然後設置容器的BlendMode圖層

的僞代碼:

container.blendMode = BlendMode.LAYER; //container holds both the mask and the thing you want masked 
maskObj.blendMode = BlendMode.ALPHA; 

drawMaskGradients(); 

這是我在過去使用通過代碼來創建所述面罩的功能:(itemContainer是我的目標m屏蔽) 但是,您可以使用設計工具在Flash IDE中完成所有操作。

softMaskSprite = new Sprite(); 

    this.blendMode = BlendMode.LAYER; 
    softMaskSprite.blendMode = BlendMode.ALPHA; 
    softMaskSprite.mouseChildren = false; 
    softMaskSprite.mouseEnabled = false; 
    this.addChildAt(softMaskSprite,this.getChildIndex(itemContainer)+1); 

    //Create Sides 
    var top:Shape = new Shape(); 
    var matr:Matrix = new Matrix(); 
    matr.createGradientBox(areaWidth + (softMaskWidth * 2), softMaskWidth, 90 * (Math.PI/180), 0, 0); 

    top.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [0,1], [0,255], matr, SpreadMethod.PAD); 
    top.graphics.drawRect(0, 0, areaWidth + (softMaskWidth * 2), softMaskWidth); 
    top.graphics.endFill(); 

    top.x = softMaskWidth * -1; 
    top.y = softMaskWidth * -1; 
    softMaskSprite.addChild(top); 

    //BOTTOM 
    var bottom:Shape = new Shape(); 
    matr = new Matrix(); 
    matr.createGradientBox(areaWidth + (softMaskWidth * 2), softMaskWidth, 90 * (Math.PI/180), 0, 0); 

    bottom.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1,0], [0,255], matr, SpreadMethod.PAD); 
    bottom.graphics.drawRect(0, 0, areaWidth + (softMaskWidth * 2), softMaskWidth); 
    bottom.graphics.endFill(); 

    bottom.y = areaHeight; 
    bottom.x = softMaskWidth * -1; 
    softMaskSprite.addChild(bottom);