2012-09-06 2 views
2

as3 트윈을 사용하여 부드러운 지우기 전환으로 알파를 페이드 할 수 있습니까?as3 트위터를 사용하여 페이드 알파를 지우기

아마도 http://www.greensock.com에 해답이있을 수도 있지만 아무 것도 발견하지 못했습니다. 이미지가 한쪽에서 다른쪽으로 천천히 희미 해지기를 바랍니다. 연약한 용해.

마스크를 사용하는 것이 가능하다고 생각했지만 마스크가 알파를 허용하지 않는다고 생각하면 그렇지 않을 수도 있습니다.

+0

문제가 해결되면 대답을 받아 들여야합니다. – Gio

+0

안녕 Gio, 미안, 컴퓨터에서 멀리 떨어져있어. 나는 그것을 시험 할 기회가 없었다. 나는 너의 두려운 일에 감사한다. 나는 이것이 그것을 할 것이라고 확신합니다. 나는 그것을 시험 할 때 대답을 받아 들일 것이다. 위대한 모범과 노력에 다시 한번 감사드립니다! –

+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 블렌드 모드를 사용하여이 작업을 수행 할 수 있습니다.

알파가 전체에서 아무 것도없는 그라디언트를 가진 모양을 만든 다음 알파를 블렌드 모드로 만듭니다. 마스크하려는 항목과 동일한 컨테이너에 넣으십시오. 여기

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

drawMaskGradients(); 

내가 코드를 통해 말했다 마스크를 생성하기 위해 과거에 사용했던 함수 : (itemContainer 내가 '객체입니다

그런 다음

사이비 코드 레이어에 컨테이너하는 BlendMode 설정 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);