0

複数のうなじボディに moviecCip の複数のインスタンスをアタッチし、それらを元の位置に戻すためのリセット ボタンを用意しました。リセット関数が呼び出されると、ボディがリセットされ、mc がアタッチされます。問題は、元の MC がまだステージ上にあり、リセットが呼び出されたときの位置に固定されていることです。

private var brickGraphic:MovieClip = new Brick();
private var brickArray:Array;

private function setUp():void
{
    var brickType:CbType = new CbType();
    var w:int = stage.stageWidth;
var h:int = stage.stageHeight;
var ag:int = stage.stageHeight - 58;// height ofarea above ground
    brickArray = new Array  ;

    //wall
    for (var i:int = 0; i < 10; i++)
    { 
    var brick:Body = new Body(BodyType.DYNAMIC);
    var brickShape:Polygon = new Polygon(Polygon.box(10,25));
    var brickGraphic:MovieClip = new Brick();
    brickGraphic.width = 10;
    brickGraphic.height = 25;
    addChild(brickGraphic);
    brickGraphic.cacheAsBitmap = true;
    brick.shapes.add(brickShape);
    brick.position.setxy(450, ((ag ) - 30 * (i + 0.5)));
    brick.angularVel = 0;
    brick.shapes.at(0).material.elasticity = .5;
    brick.shapes.at(0).material.density = 150;
    brick.cbTypes.add(brickType);
    brick.space = space;
    brickGraphic.stop();

    brick.userData.sprite = brickGraphic;
    brick.userData.sprite.x = brick.position.x;
    brick.userData.sprite.y = brick.position.y;

    this.brickArray.push(brick);
    }
}

private function reset():void
{
    space.clear();
    setUp();
}

どんな助けでも大歓迎です

4

1 に答える 1

0

リンクされた MovieClip をそれらのうなじボディから削除するステートメントをreset()関数に追加します。これが必要なものだと思います:

private function reset():void
{
    if (contains(brick.userData.sprite)) removeChild(brick.userData.sprite);
    space.clear();
    setUp();
}
于 2013-03-28T13:28:27.683 に答える