首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子画面不同区域的alpha值不同(Flex/Actionscript)

子画面不同区域的alpha值不同(Flex/Actionscript)
EN

Stack Overflow用户
提问于 2010-02-18 21:39:52
回答 2查看 632关注 0票数 0

这就是我的问题:

我让雪碧酒覆盖了整个屏幕。

除了这个精灵的某个矩形之外

我希望精灵的其余部分具有alpha = 0.5。

对于这个特定的矩形,我希望alpha = 0。

有可能吗?多么?

EN

回答 2

Stack Overflow用户

发布于 2010-02-18 22:13:42

嗯,最简单的解决方案是为sprite提供一个半透明的mask,并将maskSpritecacheAsBitmap设置为true。

票数 0
EN

Stack Overflow用户

发布于 2010-02-18 22:28:20

也许组合使用LAYERERASE BlendMode可以实现您的目标:

示例:

代码语言:javascript
运行
复制
import flash.display.BlendMode;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.geom.Rectangle;

public class PunchTest extends Sprite {
    private var punchSprite:Sprite = new Sprite();

    public function doPunch(target:Sprite, rect:Rectangle):void {
        var g:Graphics = punchSprite.graphics;
        g.clear();
        g.beginFill(0, 1);
        g.drawRect(rect.x, rect.y, rect.width, rect.height);
        g.endFill();
        punchSprite.blendMode = BlendMode.ERASE;
        target.blendMode = BlendMode.LAYER;
        target.addChild(punchSprite);
    }

    public function PunchTest() {
        super();
        var g:Graphics = graphics;

        // draw a red backgound
        g.beginFill(0xff0000, 1);
        g.drawRect(0, 0, 500, 500);
        g.endFill();

        // add a blue coverring sprite at 0.5 alpha
        var coverSprite:Sprite = new Sprite();
        g = coverSprite.graphics;
        g.beginFill(0x00ff00, 0.5);
        g.drawRect(50, 50, 300, 300);
        g.endFill();
        addChild(coverSprite);

        // do a hole into the cover sprite
        doPunch(coverSprite, new Rectangle(80, 80, 100, 100));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2288935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档