所以我正在将我在 html canvas 中开始的游戏移植到 flash as3 中。
在这个游戏中有一辆坦克。这种坦克有一个车身和一个炮塔。它可以 360 度旋转,向前和向后移动,并且可以 360 度旋转它的炮塔。坦克基地和炮塔是独立的动画图像。
我已经设置了它,以便有一个坦克影片剪辑和一个炮塔影片剪辑。我已经在坦克动画剪辑中添加了代码,这样它就可以在构造函数部分中为自己创建一个炮塔,就像这样。
turret= new turretMovieClip();
addChild(turret)
所以 tank 影片剪辑类现在有了这个 turret 变量,它保存了 turret 影片剪辑的一个实例。同样在坦克动画剪辑的构造函数中,有代码给自己一个阴影。
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 5;
dropShadow.angle = 45;
dropShadow.color = 0x000000;
etc....
this.filters = new Array(dropShadow);
但这是奇怪的部分。我希望上面的代码只会在坦克周围放置阴影,因为这是坦克动画剪辑的代码。但它在坦克和炮塔周围留下了阴影。当我添加炮塔时,坦克动画剪辑发生了变化!我不希望这种情况发生。我希望坦克有自己的影子,炮塔也有自己的影子。
这是我制作的一张图片来说明问题:http: //i.stack.imgur.com/EJuf3.jpg
图 #1 来自我的旧游戏。阴影正确地投射在坦克和地面上。图 #2 显示了上面的代码做了什么。它为坦克和炮塔提供了一个阴影,但它只投射在地面上。有人知道我在做什么错吗?我想我可以通过制作一个主坦克类来解决这个问题,然后创建一个坦克影片剪辑,然后是一个炮塔影片剪辑。这就是我应该这样做的吗?