Flash 手动设置时,电影剪辑的大小错误
我做了一个测试,在Flex中向画布添加了一个MovieClipFlash 手动设置时,电影剪辑的大小错误,flash,apache-flex,movieclip,Flash,Apache Flex,Movieclip,我做了一个测试,在Flex中向画布添加了一个MovieClip private function onInit():void { var mc:MovieClip = new MovieClip(); mc.graphics.clear(); mc.graphics.lineStyle(2, 0, 1); mc.graphics.beginFill(0xFF0000, 0.5); mc.graphics.drawRect(0, 0, 400, 300);
private function onInit():void {
var mc:MovieClip = new MovieClip();
mc.graphics.clear();
mc.graphics.lineStyle(2, 0, 1);
mc.graphics.beginFill(0xFF0000, 0.5);
mc.graphics.drawRect(0, 0, 400, 300);
mc.graphics.endFill();
mainCanvas.rawChildren.addChild(mc);
}
private function onMouseMove():void {
var child:DisplayObject = mainCanvas.rawChildren.getChildAt(i);
trace("MovieClip size:", (child as MovieClip).width, (child as MovieClip).height);
}
mainCanvas在MXML中声明和实例化:
<Canvas id="mainCanvas" width="400" height="300" />
但是,当我想显式设置电影剪辑的大小时,我再也看不到了,而ouptut显示了错误的大小
以下是update init方法:
private function onInit():void {
var mc:MovieClip = new MovieClip();
mc.width = 400;
mc.height = 300;
mc.graphics.clear();
mc.graphics.lineStyle(2, 0, 1);
mc.graphics.beginFill(0xFF0000, 0.5);
mc.graphics.drawRect(0, 0, 400, 300);
mc.graphics.endFill();
mainCanvas.rawChildren.addChild(mc);
}
以及相应的输出:
MovieClip size: 0 0
有人对这种奇怪的行为有什么解释吗?最初,您设置了一个空的
MovieClip
的大小:
var mc:MovieClip = new MovieClip();
mc.width = 400;
mc.height = 300;
您正在尝试调整没有内容的剪辑的大小
设置剪辑中有内容后的大小:
var mc:MovieClip = new MovieClip();
mc.graphics.lineStyle(2, 0, 1);
mc.graphics.beginFill(0xFF0000, 0.5);
mc.graphics.drawRect(0, 0, 400, 300);
mc.graphics.endFill();
mc.width = 400;
mc.height = 300;
非常感谢。这解决了我的问题,尽管我仍然不明白为什么在MovieClip为空时设置大小会影响最终结果。
Width
和height
translatescaleX
和scaleY
如果没有任何可测量的内容,转换矩阵将无效,并且您的DisplayObject
将永远无法使用呈现内容。
var mc:MovieClip = new MovieClip();
mc.graphics.lineStyle(2, 0, 1);
mc.graphics.beginFill(0xFF0000, 0.5);
mc.graphics.drawRect(0, 0, 400, 300);
mc.graphics.endFill();
mc.width = 400;
mc.height = 300;