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してステージに追加すると、「タイトル」が表示されますが、青い四角は表示されません。ただし、の代わりにgraphics電話をかけると、青い四角が表示されます。これは、_extra自体が正しく表示されていないことを示していますが、理由がわかりません。this_extra

私は何が欠けていますか?相互に追加するための特別な手順はありMovieClipますか?

4

2 に答える 2

2

少し癖があります。

MovieClip オブジェクトの幅/高さを設定すると、Flash は内部的にscaleXおよびscaleYプロパティも調整します。たとえば、元の幅が 100 で、200 に設定した場合、新しい幅はscaleX2 になります。これは、Flash が水平方向に 2 倍のスケールで表示することを意味します。

現在、最初は幅が 0 (空白のオブジェクト) であるため、新しい幅を設定すると、新しい幅はscaleX無限になります。つまり、Flash のように 0 になります。

そのため、オブジェクトに何かを描画したとしても、それはまだゼロ スケールのままであり、何も表示されません。別のポスターで提案されているように、これを修正する方法は、空白のオブジェクトに幅/高さを設定しないようにするか、または描画が完了した後にリセットscaleXして 1 にすることです。scaleY

...
_extra.graphics.endFill();
_extra.scaleX = _extra.scaleY = 1;
于 2012-02-28T15:06:05.857 に答える
2

削除してみる

_extra.width = 200;
_extra.height = 40;
于 2012-02-28T14:39:59.720 に答える