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
的实例并将其添加到舞台时,会显示“标题”,但蓝色方块不显示。但是,如果我在graphics
而不是this
进行_extra
来电,我会看到蓝色方块。这告诉我_extra本身没有正确显示,但我无法弄清楚原因。
我错过了什么?是否有一些特殊程序可以将一个MovieClip
添加到另一个?
答案 0 :(得分:2)
尝试删除
_extra.width = 200;
_extra.height = 40;
答案 1 :(得分:2)
有点怪癖。
设置MovieClip对象的宽度/高度时,Flash内部还会调整scaleX
和scaleY
属性。例如,如果原始宽度为100,现在您已将其设置为200,则新scaleX
应为2.这意味着Flash将以水平2X刻度显示它。
现在,最初宽度为0(空白对象),因此当您设置新宽度时,新的scaleX
应该变为无限 - 或者为0,就像Flash一样。
所以即使你在对象上画了一些东西,它仍然是零刻度,这就是为什么没有显示出来的原因。根据另一张海报的建议,解决这个问题的方法是避免在空白对象上设置宽度/高度,或者在绘图完成后将scaleX
和scaleY
重置为1。
...
_extra.graphics.endFill();
_extra.scaleX = _extra.scaleY = 1;