MovieClip调整大小,但其子项的高度和宽度不会更改?

时间:2011-02-27 20:19:33

标签: actionscript-3 flash-cs5

更改父MovieClip的宽度和高度不会改变内部MovieClip的宽度和高度。父MovieClip放置在舞台上并手动调整大小。当我通过代码将父MovieClip的维度分配给内部MovieClip时,父MovieClip维度会更改。我希望两个MovieClip在运行时具有相同的宽度和高度。但是,我在设计时更改了父MovieClip维度。

示例:

有两个MovieClip,一个在另一个内。现在,父级MovieClip在设计时放置在舞台上,其尺寸为(50,50),父级MovieClip内的子MovieClip也具有相同的尺寸(50,50)。现在,我通过按Q并用鼠标拉伸来手动更改父MovieClip维度,父MovieClip的维度现在是(100,150)或我喜欢的任何内容。现在双击父MovieClip并检查内部MovieClip维度是否保持相同,即(50,50)
现在在AS3代码中,我改变了内部MovieClip的宽度和高度,如下所示:

saveheight = parentmc.height;
savewidth  = parentmc.width;

现在我根据父MovieClip的尺寸更改子MovieClip,如下所示:

parentmc.inner_mc.width = parentmc.width;
parentmc.inner_mc.height = parentmc.height;

但这会带来parentmc的变化,所以我将值重新分配给parentmc,如下所示:

parentmc.height = saveheight;
parentmc.width = savewidth;

在上述情况下,parentmcinne_rmc维度应相同,即(100,150)。通过交换上面的值,我得到parentmcinner_mc具有相同的维度,但是对象大小永远不会(100,150),我已经使用像素完美的空中应用程序检查了它。

3 个答案:

答案 0 :(得分:3)

在您的代码中,您忽略了在创作环境中使用“Q”工具转换为父级的转换。 childmc的宽度和高度用parentmc的变换坐标空间表示。如果您希望将内部剪辑缩放到舞台坐标空间中的特定尺寸 ,则需要考虑转换产生的父级的比例:

   parentmc.inner_mc.width = parentmc.width/parentmc.scaleX;
   parentmc.inner_mc.height= parentmc.height/parentmc.scaleY;

此外,如果剪辑没有对齐(例如,通过左上角和0,0注册),放大孩子可能会推出父母的边界。

如果您更喜欢使用scaleX和scaleY,也可以使用父变换矩阵。

更新4.8.11:您是否可能要求这样做(运行时删除创作时变换)?

saveheight = parentmc.height;
savewidth  = parentmc.width;

parentmc.scaleX = 1.0;  // Undo authoring-time scale transform
parentmc.scaleY = 1.0;  // Undo authoring-time scale transform

parentmc.inner_mc.width = savewidth;
parentmc.inner_mc.height = saveheight;

parentmc.width = savewidth;
parentmc.height = saveheight;

注意:我不是在设置Flash的计算机上进行测试,所以如果这不符合你的期望,请给我发表评论,我很乐意检查我的工作并跟进。

答案 1 :(得分:0)

它不太像那样,

你需要将孩子乘以父母的比例。

你可以做的另一件事是使用getBounds然后你可以得到任何孩子(和孩子的孩子等)相对于父母的边界矩形

答案 2 :(得分:0)

老实说,我不明白你在问什么,因为你所描述的应该有用!

如果我们有一个parentMC和一个childMC都有50高度和50宽度,如果你改变parentMC.scaleX = 2;它的宽度为100。对于childMC也是如此。

请您举一个例子说明您在这里要做什么? - 或一些代码。

相关问题