我正试图让我的篝火影片剪辑遮住我的夜影影片剪辑,因此它不会通过删除影片剪辑的那一部分来显示夜晚的“黑暗”。它擦除了它,但不仅仅是影片剪辑的大小,它擦除了它的所有内容:D
我已经尝试将它放在关卡而不是world.worldTiles
中并将其从数组中取出但它仍然会做同样的事情。我也尝试将它放在影片剪辑的world.worldTiles[i]
上,仍然删除整个影片剪辑。我翻转.mask = night
左右,它只遮蔽了篝火模型。
这是我正在使用的代码:
public function addWorldObj(obj:MovieClip, c:Class, X:int, Y:int, w:Number, h:Number, f:int)
{
obj = new c();
world.worldTiles.addChild(obj);
obj.x = playerTileCoord.x + X;
obj.y = playerTileCoord.y + Y;
obj.width = w;
obj.height = h;
obj.gotoAndStop(f);
if(obj.Name == "campfire"){
obj.mask = night;
}
world.tilesInWorld.push(obj);
}
夜影影片剪辑只是一个巨大的黑色方块,阿尔法变化了。
篝火是一个看不见的广场,里面画着篝火,篝火的宽度和高度都是1平方的大小,它应该掩盖夜间阴影影片中的1个方块,但它掩盖了所有这一切。这是游戏的链接。 http://www.fastswf.com/00CRfh4 游戏开始于0.75 alpha向上计数。 您可以单击屏幕右下角的锤子打开构建菜单(您也可以单击“E”按钮,此刻也会为了测试目的而杀死您)一旦打开,请单击篝火文本并将其放在某处地图,并观看它掩盖了整晚的电影剪辑! :d
答案 0 :(得分:1)
我假设夜间电影剪辑是舞台的大小(可能更大),并且通过将其用作 蒙版,它会消失,因为蒙版是隐形的。这就是你打电话obj.mask = night
时消失的原因。另外,调整蒙版的alpha属性对该蒙版没有影响,因为正如我所提到的,蒙版是不可见的。
现在您有几个选择:
答案 1 :(得分:1)
所以我遇到的问题是掩盖并不完全是我想要的,而是我使用了BlendMode.Erase
public var spr:Sprite = new Sprite();
var msk:Sprite = new Sprite();
private var gType:String;
private var matrix:Matrix;
private var bound:Sprite;
public function addNight()
{
spr.alpha = .85;
spr.graphics.beginFill(0x000000);
spr.graphics.drawRect(0,0 ,800,600);
spr.graphics.endFill();
prnt.addChild(spr);
spr.blendMode = BlendMode.LAYER;
}
public function addLight(x:int, y:int)
{
var gType:String = GradientType.RADIAL;
var matrix:Matrix = new Matrix();
matrix.createGradientBox(300,300,0,0,0);
var gColors:Array = [0xFFFFFF, 0x000000];
var gAlphas:Array = [.9,0];
var gRatio:Array = [0,255];
var bound:Sprite = new Sprite();
bound.graphics.beginGradientFill(gType,gColors,gAlphas,gRatio,matrix);
bound.graphics.drawCircle(150,150,150);
bound.x = bound.y = 0;
bound.x = x;
bound.y = y;
bound.blendMode = BlendMode.ERASE;
spr.addChild(bound);
}