Help with BitmapData

Hi to all!

I’m somehow new to AS3, and recently I stumbled upon some problem that I just can’t figure it out. So I have 2 classes wich produces a simple ripple effect. The thing is that I just can’t put some image as background for the effect. Right now I’m out of ideas so any help is appritiated.
Here is the code itsfelf:
Ripples.as (main document class)


package
{
    import flash.display.Sprite;
    import flash.events.*;
    import RippleCanvas;
    
    public class Ripples extends Sprite {
        
        private var subobj:RippleCanvas;
        
        public function Ripples() {
        
        trace("Ripples started..");
        var subobj = new RippleCanvas();
        this.addChild(subobj);

        }
    }
}

RippleCanvas.as (subclass of Ripple)


package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;        
    import flash.events.*;  
  import flash.geom.*;  
  import flash.filters.*;
    
    public class RippleCanvas extends Sprite
    {
        
        internal var sourceBmp:BitmapData;    
        internal var paintBmpData:BitmapData;
        internal var paintBmpData2:BitmapData;    
        private var buffer:BitmapData;    
        private var paintBmp:Bitmap;
        private var output:Bitmap;
        private var brush:Sprite;
        private var logo:Sprite;
        private var filter:BitmapFilter;
        private var filter2:BitmapFilter;      
        //public var Mis:Boolean;
        private var dispFilt:BitmapFilter;        
        
        private var outputBmpData:BitmapData;            
        private var surface:BitmapData;      
        
        internal var pt = new Point(0,0);
        internal var matrix1 = new Matrix();        
        
        public function RippleCanvas()
        {
            paintBmpData = new BitmapData(128, 98, false, 0x40);
            paintBmpData2 = new BitmapData(128, 98, false, 0x40);         
            
            logo = new Sprite();            
            
            brush = new Sprite();
            brush.graphics.beginFill(0xFFFFFF,1);
            brush.graphics.drawCircle(0,0,4);
            trace ("RIppleCanvas started..");      
            
            surface = new BitmapData(128, 98, true, 0x000000);      
            surface.draw(logo);
//var ty:picture = new picture();
//var sourceBmp:Bitmap = new Bitmap(picture);
//addChild(sourceBmp);
            sourceBmp = new BitmapData(128, 98, false, 0x40);                                 
            buffer = paintBmpData.clone();      
            outputBmpData = new BitmapData(128, 98, false, 0x40);
            scaleX = 8.0;
            scaleY = 8.0;
            //this.addEventListener(MouseEvent.MOUSE_MOVE, this.moveHandler, false, 0, true);                           
            this.addEventListener(MouseEvent.MOUSE_DOWN, this.downEvent, false, 0, true);                                             
            this.addEventListener(MouseEvent.MOUSE_UP, this.upEvent, false, 0, true);   
            this.addEventListener(Event.ENTER_FRAME, this.update, false, 0, true);      
            paintBmp = new Bitmap(paintBmpData);
            var cmat:Array = [ 1, 1, 1,
                               1, 1, 1,
                               1, 1, 1 ] ;
            filter = new ConvolutionFilter(3, 3, cmat, 9, 0);
            filter2 = new BlurFilter(4,4);
            output = new Bitmap(outputBmpData);
//      output.blendMode = BlendMode.ADD;     
            //paintBmp.blendMode = BlendMode.ADD;
            addChild(output);         
            addChild(paintBmp);
//      var tf = new TextField();
//      tf.text = "testing123";
//      addChild(tf);
           disp = new DisplacementMapFilter(paintBmpData2, new Point(), 4, 4, 48, 48, DisplacementMapFilterMode.IGNORE );
           
            this.filters = new Array(new BlurFilter(16, 16));

        }
        function update(e:Event)
        {
            if(parent!=null) {
//&& Mis==true){
                    var localPt:Point = parent.globalToLocal(new Point(parent.mouseX*0.125, parent.mouseY*0.125));                    
                    var m:Matrix = new Matrix();
                    m.translate(localPt.x, localPt.y);
                    sourceBmp.draw(brush, m, null, 'invert');
                }
            //trace (localPt,Mis);
            paintBmpData.applyFilter(sourceBmp, paintBmpData.rect, pt, filter);
            paintBmpData.draw(paintBmpData, matrix1, null, 'add');
            paintBmpData.draw(buffer, matrix1, null, 'difference');   
            paintBmpData.draw(paintBmpData, matrix1, new ColorTransform(0, 0, 0.98609374, 1, 0, 0, 2, 0));      
            paintBmpData2.draw(paintBmpData, matrix1);
            outputBmpData.applyFilter(surface, outputBmpData.rect, pt, disp);
            buffer = sourceBmp;
            sourceBmp = paintBmpData.clone();

        }
        public function downEvent(e:Event)
        {      
            if(e.stageX == 0 && e.stageY == 0)
                return;
                //trace("ok",Mis);
            var curPt:Point = parent.globalToLocal(new Point(e.stageX, e.stageY));
            //var Mis=true;
            e.stopPropagation();
        }
        
        public function upEvent(e:Event)
        {   
            //var Mis=false;
            e.stopPropagation();                
        }
    }
}

Code is a bit in a mess right now :slight_smile: