【问题标题】:as3 wipe fade alpha using tweenas3 使用补间擦除淡入淡出 alpha
【发布时间】:2012-09-06 18:51:46
【问题描述】:

是否可以使用 as3 tween 通过软擦除过渡淡化 alpha?

我想也许http://www.greensock.com 可能有答案,但我什么也没找到。我希望图像从一侧逐渐消失到另一侧。软溶解。

我认为也许可以使用蒙版,但我认为蒙版不接受 alpha,否则可以这样做。

【问题讨论】:

  • 如果它解决了您的问题,您应该接受答案。
  • 您好 Gio,对不起,我离开了我的电脑。我还没有机会测试它。我感谢你的出色工作。我相信这会做到的。我会在测试时接受答案。再次感谢您的出色榜样和努力!
  • 很高兴为您提供帮助。我没有投票给你,这是我的投票。

标签: actionscript-3 flash transition alpha tween


【解决方案1】:

实际上掩码允许使用 alpha。这是一种黑客行为。您应该尝试在代码中编写此代码:

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 类的实例(这是我们在大括号之间编写的内容)。这个实例包含了我们想要逐渐改变的所有值。

【讨论】:

    【解决方案2】:

    您可以使用 ALPHA 混合模式来完成此操作。

    制作一个具有渐变的形状,其 alpha 从完全变为无,然后将其设置为混合模式 ALPHA,将其放在与您要遮罩的项目相同的容器中。

    然后将容器 blendmode 设置为 LAYER

    伪代码:

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

    这是我过去用来通过代码创建所述掩码的函数:(itemContainer 是我要掩码的对象) 但是,您可以使用设计工具在 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      相关资源
      最近更新 更多