如何有选择地掩盖舞台的某些部分?

如何有选择地掩盖舞台的某些部分?

问题描述:

我正在制作Flash游戏,而且我已经上演了蒙面,所以你的角色只能看到它的一部分。不过,我不希望整个舞台蒙面,我只想把“游戏区”蒙上脸。想象一下我的舞台是800x800。然而,“游戏”仅占据顶部的区域,800乘600.底部有200像素,可用于聊天或显示信息,因为角色在游戏区域漫游。如何有选择地掩盖舞台的某些部分?

问题是,我设置了我的面具,它掩盖了/舞台上的所有东西。即使我在“游戏区域”外面有东西,它仍然隐藏在面具背后。所以我的问题是,在我的Flash应用程序中,如何在“游戏区域”使用我的蒙版,并且不会影响我的应用程序的其他部分?我可以选择性地将物品放在面具上方吗?

谢谢!

编辑:澄清。我的游戏由initialzing的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

你的演示只是做一个绿色屏幕,每个标题显示`[error]`作为它们的值。请阅读有关蒙版的博客文章,您需要将其应用于要屏蔽的对象,并且应该将其放在显示列表上的该对象前面。 – ocodo 2011-01-24 03:20:50

为了获得更为上下文的答案,您应该提供一个用于创建掩码的代码示例。

这个blog post清楚地解释了如何在AS3中创建一个编程掩码。

从我能收集到的东西你有面具只是坐在舞台上,它需要适用于另一个DisplayObject是有用的。那时候,面具会随着DisplayObject移动,所以你可以把事物放在面前,后面,无论你喜欢什么。此外,如果您的蒙版剪辑是空白的,它将屏蔽它所链接的整个DisplayObject,为了允许内容通过它显示,它需要绘制一个合适的形状,然后内容将通过该形状显示。

+0

为您更新了我的OP。 – 2011-01-24 03:10:57