Muh*_*fan 6 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;
Run Code Online (Sandbox Code Playgroud)
现在我根据父MovieClip的尺寸更改子MovieClip,如下所示:
parentmc.inner_mc.width = parentmc.width;
parentmc.inner_mc.height = parentmc.height;
Run Code Online (Sandbox Code Playgroud)
但这parentmc也带来了变化,所以我重新分配价值parentmc:
parentmc.height = saveheight;
parentmc.width = savewidth;
Run Code Online (Sandbox Code Playgroud)
在上述情况下,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;
Run Code Online (Sandbox Code Playgroud)
另外,如果剪辑未对齐(例如,按左上角注册且子项位于 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;
Run Code Online (Sandbox Code Playgroud)
注意:我没有在安装了 Flash 的计算机上进行测试,所以如果这没有达到您的预期,请给我留言,我会很乐意检查我的工作并跟进。
| 归档时间: |
|
| 查看次数: |
7727 次 |
| 最近记录: |