如何有选择地掩盖舞台的某些部分?
我正在制作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对象初始化时,它也会在屏幕上放置一个信息栏。 此信息栏也被遮罩掩盖。玩家看不到它。问题是,我希望此栏(以及其他组件随后添加)始终可供玩家看到。我不能简单地通过面具改变“洞”的形状,因为它随着玩家移动。那么我怎么能让玩家看到信息栏,同时仍然隐藏游戏区域?
再次感谢您!
为了获得更为上下文的答案,您应该提供一个用于创建掩码的代码示例。
这个blog post清楚地解释了如何在AS3中创建一个编程掩码。
从我能收集到的东西你有面具只是坐在舞台上,它需要适用于另一个DisplayObject
是有用的。那时候,面具会随着DisplayObject
移动,所以你可以把事物放在面前,后面,无论你喜欢什么。此外,如果您的蒙版剪辑是空白的,它将屏蔽它所链接的整个DisplayObject
,为了允许内容通过它显示,它需要绘制一个合适的形状,然后内容将通过该形状显示。
为您更新了我的OP。 – 2011-01-24 03:10:57
你的演示只是做一个绿色屏幕,每个标题显示`[error]`作为它们的值。请阅读有关蒙版的博客文章,您需要将其应用于要屏蔽的对象,并且应该将其放在显示列表上的该对象前面。 – ocodo 2011-01-24 03:20:50