0

シーンをリセットしようとしています すべてのものを元の位置に移動します リセット機能は配列をリセットします うなじボディをステージに戻し、グラフィックを添付しますが、元のグラフィックはリセット時の位置に関係なくステージ上にありますと呼ばれていました

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

private function setUp():void
{
    brickArray = new Array  ;

    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 = 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;
        this.brickArray.push(brick);
    }

    private function reset():void
    {
        if (contains(brickGraphic)) removeChild(brickGraphic);
        space.clear();
        setUp();
    }
}

これは私がこのアプリで抱えている最後の問題であり、あなたの助けは大歓迎です

4

1 に答える 1

1

これは、 でそれらを削除していないためですremoveChild

ステージに追加するオブジェクトremoveChildごとに呼び出す必要があります。brickGraphic

何かのようなもの :

private function setUp():void
{
    brickArray = [];

    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 = 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;
        this.brickArray.push(brick);
    }


}

private function removeAllBricks():void
{
    for(var i:int=0; i<brickArray.length; i++)
    {
       var dp:DisplayObject = brickArray[i].userData.sprite as DisplayObject;
       if(dp && dp.parent)
           dp.parent.removeChild(dp);
    }
}

private function reset():void
{
    removeAllBricks();
    space.clear();
    setUp();
}
于 2013-03-28T23:39:22.327 に答える