actionscript-3 - MovieClip 调整大小,但其子项的高度和宽度没有改变?

标签 actionscript-3 flash-cs5

更改父 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;

在上述情况下,parentmcinne_rmc尺寸应该相同,即 (100 ,150)。通过交换上述值,我得到 parentmcinner_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/

相关文章:

xml - 将 XML 节点转换为 MovieClip

flash - 绘制矩形太大

javascript - 如何从 flash as3 获取文本和矩形颜色?

flash - Function.apply 不使用 thisArg 参数

flash - 键盘事件 as3 不工作

actionscript-3 - 我可以将 swf 地址设为真实的 URL 而不使用# 吗?

apache-flex - 在 Flex ActionScript3 + Red5、基于远程共享对象的用户列表或服务器端开发聊天室?

flash - XFL 边缘定义中非数值的含义是什么?

flash - 如何在 as3 中弯曲文本?

flash - 在 Flash CS5 中拖动对象时鼠标悬停