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

しかし、ムービークリップのサイズを明示的に設定したい場合、もう表示されず、出力に間違ったサイズが表示されます。

更新の初期化メソッドは次のとおりです。

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

誰かがこの奇妙な振る舞いについて何か説明がありますか?

4

1 に答える 1

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;
于 2012-07-05T02:54:01.230 に答える