更改父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;
在上述情况下,parentmc
和inne_rmc
维度应相同,即(100,150)。通过交换上面的值,我得到parentmc
和inner_mc
具有相同的维度,但是对象大小永远不会(100,150),我已经使用像素完美的空中应用程序检查了它。
答案 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也是如此。
请您举一个例子说明您在这里要做什么? - 或一些代码。