Actionscript 3 MovieClip会调整大小,但它的子项';s的高度和宽度是否不变?

Actionscript 3 MovieClip会调整大小,但它的子项';s的高度和宽度是否不变?,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,更改父MovieClip的宽度和高度不会改变内部MovieClip的宽度和高度。父MovieClip放置在后台并手动调整大小。当我通过代码将父MovieClip的维度指定给内部MovieClip时,父MovieClip维度将更改。我希望两个MovieClip在运行时具有相同的宽度和高度。但是,父MovieClip尺寸在设计时由我更改 例如: 有两个电影剪辑,一个在另一个里面。现在,在设计时,父MovieClip被放置在舞台上,其尺寸为(50,50),并且位于父MovieClip内部的子Movie

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

例如:

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

saveheight = parentmc.height;
savewidth  = parentmc.width;
parentmc.inner_mc.width = parentmc.width;
parentmc.inner_mc.height = parentmc.height;
parentmc.height = saveheight;
parentmc.width = savewidth;
现在我根据父MovieClip的尺寸更改子MovieClip,如下所示:

saveheight = parentmc.height;
savewidth  = parentmc.width;
parentmc.inner_mc.width = parentmc.width;
parentmc.inner_mc.height = parentmc.height;
parentmc.height = saveheight;
parentmc.width = savewidth;
但这也带来了
parentmc
的变化,因此我将值重新分配给
parentmc
,如下所示:

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

在上述情况下,
parentmc
inne\u rmc
维度应相同,即(100150)。通过如上所述交换值,我使
parentmc
internal\u mc
具有相同的维度,但对象大小从来都不是(100、150),我已使用pixel perfect air app对其进行了检查。

它不是那样工作的

您需要将子对象乘以父对象的比例


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

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

如果我们有一个parentMC和一个childMC,两个都有50高50宽,如果您更改parentMC.scaleX=2;它的宽度将达到100米。孩子们也是如此


你能提供一个你在这里尝试做什么的例子吗或者一些代码。

在您的代码中,您忽略了在编写环境中使用“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:您是否要求这样做(运行时删除创作时间转换)


注意:我不是在一台安装了Flash的计算机上测试这一点,所以如果这不符合您的期望,请给我留言,我会很高兴地检查我的工作并跟进。

我只希望添加到movieclip中的任何子项,必须具有相同的维度,无论内部子项的缩放程度如何。子容器可以是任意大小的动态容器,可以大于父容器,也可以小于父容器,但应将其大小调整为父容器维度。我将如何实现这一点???@Adam,我希望内部剪辑具有相同的宽度和高度,但这不会发生在您的代码中。如果您希望父剪辑和内部剪辑都报告相同的宽度和高度,并且在视觉上具有相同的尺寸(即内部剪辑填充外部),然后,您别无选择,只能通过首先将父片段的scaleX和scaleY设置为1.0来删除父片段上的变换,从而有效地撤消您在创作环境中执行的变换。我将更新我的答案,以显示这将是什么样子。@Adam,再次感谢你澄清我的问题并首先理解我的观点。是的,我希望在对父对象应用转换后两者都相同。现在,你让我明白了,除非我从父容器中移除转换,否则这是不可能的。非常感谢。我已经搜索了一周了。@Adam,上面的代码运行得很好,但我要找的东西是不可能的,因为在对父对象应用转换后,内部对象无法调整到其父维度。因此,更好的选择是调整内部对象的大小。这是正确的。父对象的变换应用于所有子对象,因此,如果父对象为200%(例如),然后将子对象的宽度和高度设置为与父对象的宽度和高度匹配(位于阶段坐标空间中),则最终会将父对象的大小放大两倍,因为DisplayObjectContainer会自动将其边界框增加到可视地包含其所有子项所需的大小。父对象和子对象大小相等的唯一方法是父对象的比例为100%(1.0)