2

我正在开发一个带有动态创建方块的突破型游戏。当一块砖被击中时,我会启动一个 removeMC 函数,该函数应该将其变为白色并使其尺寸缩小。然而,有时方块只是变成白色而不是补间。我已经包含了 removeMV 函数的脚本以及创建正方形的函数。Arg1 是要删除的正方形。我为糟糕的命名约定道歉,但火灾已经损坏,必须使用反编译器来恢复。

这是 removeMC 函数

  public function removeMC(arg1:flash.display.Sprite):*
    {
       this.score --;
        this.uiBar.txtScore.text=this.score;
        var loc1:*=new flash.geom.ColorTransform();
        loc1.color = 0xffffFF;
        arg1.transform.colorTransform = loc1;
        TweenMax.to(arg1, 0.4, {colorTransform:{tint:0x0000ff, tintAmount:1}});
        var loc2:*=this.ballMC.x - this.ballMC.x % 30;
        var loc3:*=this.ballMC.y - this.ballMC.y % 30;
        arg1.scaleY = arg1.scaleY * -1;
       // trace("Ball x:" + this.ballMC.x + " ballY:" + this.ballMC.y + " block x:" +     loc2 + " block y:" + loc3);
        var loc4:*=new fl.transitions.Tween(arg1, "width", null, 30, 0, 0.5, true);
        var loc5:*=new fl.transitions.Tween(arg1, "height", null, 30, 0, 0.5, true);
        var loc6:*=new fl.transitions.Tween(arg1, "x", null, 0, loc2, 0.5, true);
        var loc7:*=new fl.transitions.Tween(arg1, "y", null, 0, loc3, 0.5, true);
        this.brickArray.splice(this.indexSearch(this.brickArray, arg1), 1);
        arg1.x+=3000;//failsafe to remove the squares.  doesn't work
        arg1.y+=3000;
        return;
    }

这是创建正方形的函数。Arg 1 和 arg2 是正方形的宽度和高度

     public function createImgNodeGrid(arg1:int=1, arg2:int=1, arg3:Number=0):void
    {
        var loc6:*=0;
        var loc7:*=null;
        var loc8:*=null;
        var loc9:*=null;
        var loc10:*=null;
        var loc1:*=this._img.width / arg1;
        var loc2:*=this._img.height / arg2;
        var loc3:*=arg1 * arg2;
        this._imgNodes = [];
        var loc4:*=0;
        var loc5:*=0;
        while (loc5 < arg1) 
        {
            loc6 = 0;
            while (loc6 < arg2) 
            {
                loc7 = new flash.geom.Rectangle(loc5 * loc1, loc6 * loc2, loc1, loc2);
                loc8 = new flash.display.BitmapData(loc1, loc2, true);
                loc8.copyPixels(this._img.bitmapData, loc7, this.zero);
                loc9 = new flash.display.Bitmap(loc8);
                loc9.x = loc5 * (loc1 + arg3);
                loc9.y = loc6 * (loc2 + arg3);
                var loc11:*;
                this._imgNodes[loc11 = loc4++] = loc9;
                loc10 = new flash.display.Sprite();
                loc10.mouseChildren = false;
                this.brickArray.push(loc10);
                loc10.addChild(loc9);
                this._tiledImg.addChild(loc10);
                ++loc6;
            }
            ++loc5;
        }
        return;
    }
4

1 回答 1

0

我可能会错过这里的标记,因为它很难阅读,但是,这是我对您的 removeMc 函数的建议。我注意到你有 TweenMax,所以我会使用它而不是 flash tweener 类。

 public function removeMC(arg1:flash.display.Sprite):*
    {
       this.score --;
        this.uiBar.txtScore.text=this.score;
        var loc1:*=new flash.geom.ColorTransform();
        loc1.color = 0xffffFF;
        arg1.transform.colorTransform = loc1;
        var loc2:*=this.ballMC.x - this.ballMC.x % 30;
        var loc3:*=this.ballMC.y - this.ballMC.y % 30;

        TweenMax.to(arg1, 0.4, {scaleY:0, scaleX:0, x:loc2, y:loc3, colorTransform:{tint:0x0000ff, tintAmount:1}, onComplete:tweenComplete(arg1)});

       // trace("Ball x:" + this.ballMC.x + " ballY:" + this.ballMC.y + " block x:" + loc2 + " block y:" + loc3);

        this.brickArray.splice(this.indexSearch(this.brickArray, arg1), 1);
        return;
    }

private function tweenComplete(square:Sprite):void
{
    this.removeChild(square);
}

这应该会导致正方形缩小到 0 大小并同时变为白色。然后,一旦完成,它将完全删除孩子。

于 2012-12-19T13:58:11.197 回答