【问题标题】:Masks in AIR with Actionscript 3AIR 中的遮罩与 Actionscript 3
【发布时间】:2009-12-07 18:19:30
【问题描述】:

我正在尝试在 ActionScript 3 中对圆形进行蒙版(我使用的是 Flex AIR 框架)。它与生态足迹有关,每个圆圈代表一个地球。 这张生态足迹图片在一个容器内。问题是面具似乎是固定的,尽管图片浮动。当我向下滚动容器时,图片会滚动得很好,但蒙版不会,剪掉图片的顶部。 我已将这个和其他 UIMovieClip 放在 VBox 容器中。该 VBox 容器位于另一个 VBox 容器中。如果我把前面的 VBox 容器放在后者的底部,遮罩就不会跟着它,所以圆圈不会被遮住。

mask = new UIMovieClip();
mask.graphics.beginFill(0xFFFFFF);
mask.graphics.drawRect(radius,radius+radius*2*(1-(ecoWeight-Math.floor(ecoWeight))),1000,1000);
mask.graphics.endFill();    
earth = new UIMovieClip();    
earth.graphics.beginFill(0xFFFFFF);
earth.graphics.drawCircle(radius,radius,radius);
earth.mask=mask;
earth.graphics.endFill();

【问题讨论】:

    标签: actionscript-3 air mask


    【解决方案1】:

    将掩码添加到 VBox 容器中:

    myVBox.addChild(mask);
    

    或将遮罩和形状都放入容器中,然后移动容器:

    var bundle:Sprite = new Sprite();
    
    mask = new UIMovieClip();
    ...
    
    earth = new UIMovieClip();    
    ...
    
    bundle.addChild(mask);
    bundle.addChild(earth);
    
    myVBox.addChild(bundle);
    
    bundle.x = 100;
    bundle.y = 100;
    

    这将大地和面具固定在一起。我不熟悉 UIMovieClip,但你可以用我想象的 UIMovieClip 替换 Sprite。这是对第一个解决方案更好的解决方案,因为如果不将它们捆绑在一起,如果您移除地球,您不太可能记得移除掩膜。

    希望这会有所帮助。

    【讨论】:

    • 谢谢!这很有意义。我要试试:-P
    【解决方案2】:

    口罩很糟糕,而且经常达不到人们对它们的期望。将 BlendMode.ALPHA 与 BlendMode.LAYER 结合使用让我更加幸运。

    【讨论】:

    • 也许不是正确的答案,但我使用 BlendMode.ERASE 和 BlendMode.LAYER 做到了,而且确实更容易。
    【解决方案3】:

    我不了解 Flex,我使用 Flash CS3,但尝试添加一个事件侦听器来重新定位蒙版。 另外,请尝试确保您以正确的顺序做事。应用面具,然后将所有东西放在第二个 VBox 中。 换句话说,我对 Actionscript 的(有限)经验告诉我,年表很重要。

    此外,请确保您的所有变量都已正确定位。在 Flash CS3 中(同样,我可能会胡言乱语)如果您单击其中包含子元素的 MovieClip 并且您没有专门为子元素关闭鼠标,则父级不会注册该事件。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2014-02-09
      • 2023-03-22
      • 2010-12-19
      • 1970-01-01
      相关资源
      最近更新 更多