我通过在 Flex 中将 MovieClip 添加到 Canvas 进行了测试。
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" />
第一次尝试效果很好,当我将鼠标移到舞台上时,控制台会显示以下输出:
MovieClip size: 402 302
但是,当我想明确设置我不再看到的影片剪辑的大小时,输出显示的大小错误。
这是更新初始化方法:
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
有人对这种奇怪的行为有任何解释吗?