在我的游戏中,我的飞机从俯视图中飞过屏幕。当飞机坠毁时,我将它们缩小,使它看起来好像落在离地面越来越远的地方。我也有这些工艺品的炮塔。它们是空中计划中的独立物体。我也缩小它们。唯一的问题是他们没有正确重新定位。他们保持在x和y位置,即使他们被缩放,看起来好像他们被拉离了飞机。是否有可能根据它们所在物体(即空中飞机)的大小正确地重新定位它们
我刚从另一篇文章得到了一个很好的答案,将它们放入movieclip本身。这是伟大的,但为了记录,如果有人知道答案,那将是伟大的。
答案 0 :(得分:1)
你应该把每个飞机的一切都保留在它自己的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)