双击测试检测

时间:2019-03-24 14:21:50

标签: actionscript-3

我想创建一个打砖块游戏。brick(movieClip)对象被保存在数组中,所以我想在两次碰撞后销毁砖块。我已经在一次碰撞后销毁砖块了,但是我想两次碰撞后将砖块销毁。当第一次检测到碰撞时,请更改砖块颜色,第二次销毁砖块,如何解决此问题,请帮帮我。 这里是积木创建功能。

private function createLabell():void
        {
            for(var i:Number=0;i<totalBricks;i++)
            {
                if(i==2)
                {
                    newBrick=new Power();
                }else
                {
                    newBrick=new Brick();
                }
                bg_mc.addChild(newBrick);
                newBrick.x=50*row+10;
                newBrick.y=30 *col+40;
                label1.push(newBrick)

                row++;
                if(row>8)
                {
                    row=0;
                    col++;
                    //trace(col);
                }
                //trace(label1[i]);
            }
        }

这里是碰撞部分(一次碰撞)。

private function collisionDetectionn():void
        {
            for(var i:Number=0;i<label1.length;i++)
            {
                var bk:MovieClip = label1[i] as MovieClip;
                if(bg_mc.ball.hitTestObject(bk))
                    {
                        ballYSpeed *=-1;
                        brickCount++;
                        scores+=5;
                        bk.parent.removeChild(bk);
                        label1.splice(i,1);
                        i--;

                    }
            }
        }

但是我想在两次碰撞后销毁砖头。谢谢。

1 个答案:

答案 0 :(得分:0)

据我所见,是您的积木的基类吗?什么是力量?

无论如何,通过公共变量碰撞

增强
public var collisions:int = 0;

现在有点棘手,因为在碰撞检测中您无法区分Power和Brick。因此,我们需要确保首先是砖头。然后,与其简单地在碰撞时移除砖块,不如将其 collisions 计数器增加1,最后将其移除(如果为2)。

var bk:MovieClip = label1[i] as MovieClip;
if(bg_mc.ball.hitTestObject(bk))
{
    ballYSpeed *=-1;
    brickCount++;
    scores+=5;
    if(bk is Brick)
    {
        Brick(bk).collisions++;
        if(Brick(bk).collisions==2)
        {
            bk.parent.removeChild(bk);
            label1.splice(i,1);
            i--;
        }
    }
    else
    {
        bk.parent.removeChild(bk);
        label1.splice(i,1);
        i--;       
    } 
}