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(添加Childs 像素的那个。)。(我在放置之前将鼠标四舍五入它。

谢谢你的帮助。

编辑:剧透失败。

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 回答