Apache flex 精灵不同区域的不同alpha值(Flex/Actionscript)
我的问题是: 我有一个精灵覆盖了整个屏幕。 除了这个精灵的某个矩形 我希望其他精灵的alpha=0.5。 对于那个特定的矩形,我想要alpha=0。Apache flex 精灵不同区域的不同alpha值(Flex/Actionscript),apache-flex,actionscript-3,filter,alpha,alphablending,Apache Flex,Actionscript 3,Filter,Alpha,Alphablending,我的问题是: 我有一个精灵覆盖了整个屏幕。 除了这个精灵的某个矩形 我希望其他精灵的alpha=0.5。 对于那个特定的矩形,我想要alpha=0。 可能吗?如何操作?最简单的解决方案是为精灵提供一个半透明遮罩,并将遮罩和精灵的cacheAsBitmap设置为true。也许结合使用和BlendMode可以实现您想要的功能: 例如: import flash.display.BlendMode; import flash.display.Graphics; import flash.display
可能吗?如何操作?最简单的解决方案是为精灵提供一个半透明遮罩,并将遮罩和精灵的cacheAsBitmap设置为true。也许结合使用和BlendMode可以实现您想要的功能: 例如:
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));
}
}