0

クリックしてムービークリップを追加する場所がありますが、効率が悪く、必要な機能がありません。他のムービークリップが同じ場所にない場合にのみ、ムービークリップを追加する必要があります。

private function onClick():void
        {
            if(placesound==false)
            {
                placepixel.play();
                placesound = true;
            }
            if(erasetrue==false)
            {
                var pixel = new Pixel();
                pixel.x = 0;
                pixel.y = 0;
            }
            if(mouseY>30 && irontrue==true)
            {
                //var pixel = new Pixel();
                pixel.x=(Math.round(mouseX/5)*5)-2.5;
                pixel.y=(Math.round(mouseY/5)*5)-2.5;
                pixel.graphics.beginFill(0x999999);
                pixel.graphics.drawRect(0, 0, 5, 5);
                pixel.graphics.endFill();
                pixel.type=0;
                pix.push(pixel);
                //addChild(pixel);
            }
            if(mouseY>30 && woodtrue==true)
            {
                //var pixel = new Pixel();
                pixel.x=(Math.round(mouseX/5)*5)-2.5;
                pixel.y=(Math.round(mouseY/5)*5)-2.5;
                pixel.graphics.beginFill(0x996600);
                pixel.graphics.drawRect(0, 0, 5, 5);
                pixel.graphics.endFill();
                pixel.type=3;
                pix.push(pixel);
                //addChild(pixel);
            }
            if(erasetrue==true)
            {
                for (i=pix.length-1; i>=0; i--)
                {
                    if(pix[i].x==(Math.round(mouseX/5)*5)-2.5 && pix[i].y==(Math.round(mouseY/5)*5)-2.5)
                    {
                        removeChild(pix[i]);
                        pix.splice(i, 1);
                    }
                }
            }
            if(mouseY>30 && springtrue==true)
            {
                //var pixel = new Pixel();
                pixel.x=(Math.round(mouseX/5)*5)-2.5;
                pixel.y=(Math.round(mouseY/5)*5)-2.5;
                pixel.graphics.beginFill(0x000000);
                pixel.graphics.drawRect(0, 0, 5, 5);
                pixel.graphics.endFill();
                pixel.type=1;
                pix.push(pixel);
                //addChild(pixel);
            }
            if(mouseY>30 && portaltrue==true)
            {
                //var pixel = new Pixel();
                pixel.x=(Math.round(mouseX/5)*5)-2.5;
                pixel.y=(Math.round(mouseY/5)*5)-2.5;
                pixel.graphics.beginFill(0x9999FF);
                pixel.graphics.drawRect(0, 0, 5, 5);
                pixel.graphics.endFill();
                pixel.type=2;
                pix.push(pixel);
                //addChild(pixel);
            }
            if(erasetrue==false)
            {
                addChild(pixel);
            }
        }

他のムービークリップ(配列「pix」を参照)が配置される場所にまだない場合にのみ、最後のif(ピクセルをaddChildするもの)のみを実行したいと思います(配置する前にマウスを丸めます)それ。

助けてくれてありがとう。

編集:スポイラーが失敗しました。

4

1 に答える 1

1

pix 配列をループして、配列内のいずれかのピクセルが新しいピクセル オブジェクトの x および y 座標と一致するかどうかを確認します。そうでない場合は、ピクセルを追加する必要があります。

したがって、最後の if ステートメントの代わりに:

...
if(erasetrue==false){
    var canPlace:Boolean = true;

    for (var i:int = 0; i < pix.length; i++){
        var placedPixel:Pixel = pix[i] as Pixel;
        if(pixel.x == placedPixel.x && pixel.y == placedPixel.y){
             canPlace = false;
        }

    }

    if(canPlace){
        addChild(pixel);
    }
}
于 2013-07-31T05:43:23.287 に答える