我正在制作Flash游戏,我已经上演了蒙面,所以你的角色只能看到它的一部分。但是,我不希望整个舞台蒙面,我只想把“游戏区”蒙面。想象一下,我的舞台是800x800。然而,“游戏”只占据了顶部的区域,800乘600.底部有200px,我可以用来聊天或显示信息,因为你的角色在游戏区域内走动。
问题是,我设置了我的面具,它在舞台上掩盖/一切/。即使我在“游戏区域”之外有东西,它仍然隐藏在面具后面。所以我的问题是,在我的flash应用程序中,如何在“游戏区域”中使用我的面具,而不是我的应用程序的其他部分受到影响?我可以选择性地将物品放在面具上吗?
谢谢!
编辑:澄清。我的游戏从初始化GameScreen对象开始:
game = new GameScreen(); //800 x 600. Declared as class variable
game.y = 40;
addChild(game);
在此之前,为了使面具全黑,我在GameScreen后面放了一个黑色矩形:
var rect:Shape = new Shape();
rect.graphics.lineStyle(1, 0x000000);
rect.graphics.beginFill(0x000000);
rect.graphics.drawRect(0,0,800,600);
rect.graphics.endFill();
rect.y = 40;
addChild(rect);
///
/// Start the game
///
game = new GameScreen();
game.y = 40;
addChild(game);
当GameScreen对象初始化时,它会创建“洞”,以便您可以看到自己的角色。
fogOfWar = new CircleMask();
addChild(fogOfWar);
this.mask = fogOfWar;
fogOfWar.x = player.x;
fogOfWar.y = player.y;
所以现在,我们进行了游戏设置,面具上有一个圆孔,玩家可以看到他的角色。但是,当Game Screen对象初始化时,它会在屏幕上放置一个信息栏。 此信息栏也会被掩码隐藏。玩家无法看到它。问题是,我希望此栏(以及之后添加的其他组件)始终对玩家可见。我不能简单地通过面具改变“洞”的形状,因为它与玩家一起移动。那么如何让玩家看到信息栏,同时仍然隐藏游戏区域呢?
再次感谢你!
答案 0 :(得分:2)
要获得更多上下文答案,您应该提供用于创建蒙版的代码示例。
这个blog post清楚地解释了如何在AS3中创建程序化掩码。
从我可以收集的内容中,您只需将面具放在舞台上,就需要将其应用于另一个DisplayObject
才有用。此时,面具会随着DisplayObject
移动,所以你可以把东西放在后面,不管你喜欢什么。
此外,如果你的面具片段是空白的,它将掩盖它所链接的整个DisplayObject
,为了允许内容通过它显示,它需要在其中绘制一个合适的形状,然后内容将通过那个形状。