2012-02-28 93 views
0
public class ItemView extends MovieClip { 

    private var _title:TextField; 
    private var _extra:MovieClip; 

    public function ItemView() { 
    setup(); 
    return; 
    } 

    private function setup():void { 
    trace("ItemView::setup()"); 
    _title = new TextField(); 
    _title.text = "Title"; 
    addChild(_title); 
    _extra = new MovieClip(); 
    _extra.width = 200; 
    _extra.height = 40; 
    _extra.graphics.beginFill(0x0000ff); 
    _extra.graphics.drawRect(0, 0, 20, 20); 
    _extra.graphics.endFill(); 
    addChild(_extra); 
    return; 
    } 

} 

當我創建ItemView的實例並將其添加到舞臺上時,顯示「標題」,但藍色方塊沒有顯示。但是,如果我撥打this撥打電話graphics而不是_extra,我確實看到了藍色方塊。這告訴我_extra本身沒有正確顯示,但我無法弄清楚爲什麼。AS3:已添加小孩但未顯示

我錯過了什麼?是否有一些特殊的程序可以將一個MovieClip添加到另一個?

+0

我不確定這是否可以解決任何問題,但是您幾乎從不在IDE之外使用MovieClip。改爲使用Sprite類。 MovieClip有很多無用的開銷。 – 2012-02-28 14:38:39

+0

謝謝@JonatanHedborg! – 2012-02-28 14:43:23

回答

2

小怪癖。

當您設置MovieClip對象的寬度/高度時,Flash內部還會調整scaleXscaleY屬性。例如,如果原始寬度爲100,現在您將其設置爲200,則新的scaleX應爲2.這意味着Flash會以水平方向以2倍的比例顯示它。現在,最初寬度爲0(空白對象),所以當你設置一個新的寬度時,新的scaleX應該變成無限 - 或0,就像Flash一樣。

因此,即使您已將某些東西繪製到對象上,它仍然處於零刻度,這就是爲什麼沒有顯示。正如另一張海報所建議的那樣,解決方法是避免設置空白對象的寬度/高度,或者在完成繪製後將scaleXscaleY重置爲1。

... 
_extra.graphics.endFill(); 
_extra.scaleX = _extra.scaleY = 1; 
+0

優秀信息!謝謝! – 2012-02-28 15:09:44

2

嘗試刪除

_extra.width = 200; 
_extra.height = 40; 
+0

咦?爲什麼......這是怎麼回事?如何設置高度和寬度可能會產生這種效果? 「 – 2012-02-28 14:45:37

+0

」除了TextField和Video對象之外,即使您嘗試將寬度設置爲不同的值,沒有內容的顯示對象(如空精靈)的寬度也爲0。 – 2012-02-28 15:00:55

+0

@Chris所以只是要指出。在繪製完矩形後,您可以隨意調整寬度和高度。 – 2012-02-28 15:07:38

相關問題