更改父 MovieClip 的宽度和高度不会改变内部 MovieClip 的宽度和高度。父影片剪辑放置在舞台上并手动调整大小。当我通过代码将父 MovieClip 的维度分配给内部 MovieClip 时,父 MovieClip 维度发生了变化。我希望两个 MovieClip 在运行时具有相同的宽度和高度。但是,我在设计时更改了父 MovieClip 尺寸。
例子:
有两个 MovieClip,一个在另一个里面。现在父影片剪辑在设计时放置在舞台上,其尺寸为 (50,50),而位于父影片剪辑内的子影片剪辑也具有相同的尺寸 (50,50)。现在,我通过按 Q 并用鼠标拉伸(stretch)它来手动更改父 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;
在上述情况下,
parentmc
和 inne_rmc
尺寸应该相同,即 (100 ,150)。通过交换上述值,我得到 parentmc
和 inner_mc
要具有相同的尺寸,但对象大小永远不是(100、150),我已经用像素完美的空气应用程序检查了它。
最佳答案
在您的代码中,您忽略了在创作环境中使用“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 的计算机上进行测试,所以如果这没有达到您的预期,请给我留言,我会很乐意检查我的工作并跟进。
关于actionscript-3 - MovieClip 调整大小,但其子项的高度和宽度没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135656/