2012-07-05 30 views
1

我通過向Flex中的Canvas添加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" /> 

這第一次嘗試工作正常,並在控制檯顯示以下輸出,當我將鼠標移動到舞臺:

MovieClip size: 402 302 

但是,當我想明確設置影片剪輯的大小時,我再也看不到了,而且ouptut顯示的大小錯誤。

這裏是更新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 

是否有人有這種奇怪的行爲作出任何解釋?

回答

2

最初設置的空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; 
+0

謝謝你,能解決我的問題,但我還是不明白,爲什麼設置的大小時,影片剪輯是空的影響最終結果。 – duTr

+4

'寬度'和'高度'翻譯'scaleX'和'scaleY',沒有任何可測量的變換矩陣變爲無效,您的'DisplayObject'永遠不會呈現內容。 –