在我的比赛中,我有飞机从俯视图飞过屏幕。当飞机坠毁时,我将它们缩小以使它看起来好像正在离地面越来越近并远离屏幕。我也有这些工艺的炮塔。他们是从空气计划分离的物体。我也缩小了它们。唯一的问题是他们不正确地重新定位。即使他们正在缩小,他们仍然处于x和y位置,看起来好像他们正在从飞机上撤离。是否有可能根据它们坐在的对象(即飞机)上的尺寸正确地重新定位它们基于比例重新定位对象
我刚刚从另一篇文章中得到了很好的答案,将它们放入动画片本身。这是伟大的,但为了记录,如果有人知道这个答案,这将是伟大的。
在我的比赛中,我有飞机从俯视图飞过屏幕。当飞机坠毁时,我将它们缩小以使它看起来好像正在离地面越来越近并远离屏幕。我也有这些工艺的炮塔。他们是从空气计划分离的物体。我也缩小了它们。唯一的问题是他们不正确地重新定位。即使他们正在缩小,他们仍然处于x和y位置,看起来好像他们正在从飞机上撤离。是否有可能根据它们坐在的对象(即飞机)上的尺寸正确地重新定位它们基于比例重新定位对象
我刚刚从另一篇文章中得到了很好的答案,将它们放入动画片本身。这是伟大的,但为了记录,如果有人知道这个答案,这将是伟大的。
您应该将每个平面的所有内容保留在自己的MovieClip中。但是,如果没有内置的scaleX/scaleY,知道如何做到这一点仍然很有用。按照你目前的设置,它可以这样完成(如果飞机是你的飞机,比例尺是你要缩放飞机的因素(0-1之间),而炮塔是一个相对于飞机):
function scalePlane(plane, turret, scale:Number):void {
//scaling coordinates:
var relativeX:Number = turret.x - plane.x;
var relativeY:Number = turret.y - plane.y;
var newRelativeX:Number = relativeX*scale;
var newRelativeY:Number = relativeY*scale;
turret.x = plane.x + newRelativeX;
turret.y = plane.y + newRelativeY;
//scaling size:
turret.scaleX *= scale;
turret.scaleY *= scale;
plane.scaleX *= scale;
plane.scaleY *= scale;
}
scalePlane(plane1, turret1, 0.9);
//overall scale is 0.9;
//next frame:
scalePlane(plane1, turret1, 0.9);
//now the overall scale is 0.81 because you are multiplying the scales
我还没有测试过,但它应该工作,只要飞机和炮塔有相同的父母。请注意,在这种情况下比例是相对的,所以您可能需要稍微改变一下计算。 (如果您将这个代码以0.5的比例调用这个代码两次,那么这个飞机就会有0.5 * 0.5 = 0.25的比例)
谢谢。我确实把所有内容都放在了movieclip里面,但是当我这样做时,它似乎听不到我的炮塔班。它应该是什么?我是否做错了 – numerical25 2010-01-19 03:17:17
没关系,我现在知道为什么。我已经在我的游戏引擎中设置了只有一个循环的地方。所有类都使用updateObject方法来更新每个帧的状态。因为我把我的炮塔放在movieclip里面,而不是以这种方式添加它,它不能正常工作 – numerical25 2010-01-19 03:19:26
唯一的原因是我这样做是因为我不必担心销毁所有displayobjects eventlisteners和循环。如果我在炮塔类中添加一个事件侦听器,并将它们直接添加到我的飞机动画片段中。当我摧毁飞机 – numerical25 2010-01-19 03:24:53