所以我正在移植一个游戏,我在html画布中开始使用flash as3。
在这个游戏中有一个坦克。这个坦克有一个车身和一个炮塔。它可以360度旋转并向前和向后移动,并将其转动360度旋转。坦克底座和炮塔是单独的动画图像。
我已将它设置为有一个坦克movieclip和一个炮塔动画片段。我已经将代码添加到tank movieclip中,以便它在构造函数部分中为自己创建一个炮塔。
turret= new turretMovieClip();
addChild(turret)
所以坦克movieclip类现在有这个炮塔变量,它包含炮塔动画片段的一个实例。同样在tank movieclip的构造函数中,有代码给自己一个阴影。
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 5;
dropShadow.angle = 45;
dropShadow.color = 0x000000;
etc....
this.filters = new Array(dropShadow);
但这是奇怪的部分。我预计上面的代码只会在坦克周围放一个阴影,因为这是坦克movieclip的代码。但它在坦克和炮塔周围留下了阴影。当我添加炮塔时,坦克movieclip改变了什么!我不希望这发生。我希望坦克拥有它自己的影子和炮塔以拥有它自己的影子。
这是我说明问题的图片: http://i.stack.imgur.com/EJuf3.jpg
图#1来自我的旧游戏。阴影正确地投射在坦克和地面上。图#2显示了上述代码的作用。它为坦克和炮塔提供了一个阴影,但它只是在地面上施放。谁知道我做错了什么?我想我可以通过制作一个主坦克类然后创建一个坦克movieclip然后一个炮塔动画片段来解决这个问题。那是我应该这样做的吗?
答案 0 :(得分:2)
最简单的方法是从一个由基类/炮塔的两个独立子节点组成的Tank类的空 Sprite开始。这样你可以为它们应用两个不同的阴影。
+ Tank [Sprite]
|
\--+ Base [MovieClip] = Graphics + DropShadow
|
\--+ Turret [MovieClip] = Graphics + DropShadow