as3里修改子项的宽度后,子项的子项的宽度在显示上是变了,但是读取它的.width却还是原来的宽度

mc2.width=100;
stage.addChild(mc1);//把空白mc1加进场景
mc1.addChild(mc2);//把有内容的mc2加进mc1
mc1.width = mc1.width/2;//把mc1的宽度缩小
trace(mc2.width);//输出还是100
trace(mc2.x);//输出也是没变....因为缩放之后mc2有横向移动,所以mc2.x应该要变的...

但是场景中显示的mc2的宽度已经缩短了一半了的
我想问问,除了用mc2.width/2计算mc2的显示宽度之外,还有什么方法可以直接读出mc2相对于stage的真正显示宽度和真正显示的坐标啊?

阅读 3.6k
1 个回答

希望直接读出数值是因为用数学运算的话,有时候会因为小数点后尾数太多而出现挺明显的偏差,所以放弃使用。
我刚刚想到了一个方法,而且已经实施成功:使用globalToLocal和localToGlobal完美但不直接地解决了问题。
1、首先用localToGlobal计算出mc2.x+mc2.width和mc2.x相对于主场景的x值
2、用前者减去后者
但是这样不直接,而且使用localToGlobal运算必须先把值组装为点...增加了很多没必要的代码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进