Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 手动设置时,电影剪辑的大小错误_Flash_Apache Flex_Movieclip - Fatal编程技术网

Flash 手动设置时,电影剪辑的大小错误

Flash 手动设置时,电影剪辑的大小错误,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);

我做了一个测试,在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);
    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
translate
scaleX
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;