+ -
当前位置:首页 → 问答吧 → 如何在一个bitmap上挖洞[已解决]

如何在一个bitmap上挖洞[已解决]

时间:2009-11-14

来源:互联网

现在我有一个背景图片, 我需要挖掉它的某一块为空的, 这样就可以穿过去看到它后面的东西.
有时候又要把这个洞补好, 如何做可以最快也最节约内存?
1, 如何挖
2, 如何补
3, 怎样最快, 一直存着那个图的数据在内存中吗? 还是不要存, 要挖要补的时候才新建new bitmapdata?
谢谢.

作者: kenchef   发布时间: 2009-11-14

都用 copyPixels

作者: flash023   发布时间: 2009-11-14

方的好弄,圆的就不好弄了。

作者: dearmite   发布时间: 2009-11-14

都好弄

作者: flash023   发布时间: 2009-11-14

至少给个步骤嘛, 代码的话我自己会写.

是方的, 不需要圆的.

作者: kenchef   发布时间: 2009-11-15

引用:
原帖由 kenchef 于 2009-11-15 15:58 发表
至少给个步骤嘛, 代码的话我自己会写.是方的, 不需要圆的.
有啥子步骤哇? 我说了用copyPixels 你不明白的话,看帮助就可以了噻。你自己晓得写,又怕不得这样说了哟。
多二不少你也应该说个谢谢噻!
复制内容到剪贴板
代码:
package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.geom.Point;
    
    /**
     * ...
     * @author FLASH023
     */
    public class Main extends Sprite  
    {
        private var p_bmd:BitmapData;
        private var cir_bmd:BitmapData;
        private var rec_bmd:BitmapData;
        public function Main():void {
            init();
        }
        private function init():void {
            p_bmd = new BitmapData(500, 400, true, 0xffff66ff);
            var cir_shape:Shape = new Shape;
            cir_shape.graphics.beginFill (0);
            cir_shape.graphics.drawCircle (40, 40, 40);
            cir_bmd = new BitmapData(cir_shape.width, cir_shape.height, true, 0xffffffff);
            cir_bmd.draw (cir_shape);//可以是任意形状的显示对象
            cir_bmd.copyChannel (cir_bmd, cir_bmd.rect, new Point(), 1, 8);
            p_bmd.copyPixels(p_bmd, p_bmd.rect, new Point(100,100), cir_bmd, new Point(), false);
            
            rec_bmd = new BitmapData (100, 100, true, 0x000000ff);            
            p_bmd.copyPixels(p_bmd, p_bmd.rect, new Point(220,100), rec_bmd, new Point(), false);
            addChild (new Bitmap (p_bmd));
        }
    }
    
}

附件

Test.swf (1.14 KB)

2009-11-15 17:09, 下载次数: 49

作者: flash023   发布时间: 2009-11-15

    额...   承认错误, 我并没有说偷懒要你们给源码的意思.
可能我语文没学好. 见谅哦..  在你帖代码之前已经解决了. 就是你的提示: copyPixels.
呵呵..  十分感谢. 辛苦了!

作者: kenchef   发布时间: 2009-11-15

用BlendMode很好搞定

作者: mckinley   发布时间: 2009-11-16

BlendMode? 我查查.

作者: kenchef   发布时间: 2009-11-16

用BlendMode怎么弄啊??不明白

作者: shinijiuai   发布时间: 2010-02-26

displayobject.blendMode = 12;
or
displayobject.blendMode = "erase";

作者: zijiguang   发布时间: 2010-02-26

引用:
原帖由 zijiguang 于 2010-2-26 16:23 发表
displayobject.blendMode = 12;
or
displayobject.blendMode = "erase";
很好,又了解了新东西,谢谢

作者: South123   发布时间: 2010-02-26

正是我想看的

作者: yfhy123   发布时间: 2011-07-17