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 があることに気付いたので、フラッシュ トゥイナー クラスとは対照的にそれを利用します。

 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 に答える