Puzzle Bobble Help (AS3)

I have started to make a puzzle bobble game and everything is going well but I have now hit a snag.

I want it so when the player removes a set of bubbles it plays an animation or does a particle effect at each bubble that was removed.
I can get it to do a particle effect at the last bubble that made the chains position but not the other bubbles positions.

Any help would be greatly appreciated.
Here is my code

package {
import org.flintparticles.twoD.emitters.Emitter2D;
import org.flintparticles.twoD.renderers.BitmapRenderer;
import com.greensock.*;

  import flash.filters.BlurFilter;
  import flash.filters.ColorMatrixFilter;
  import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.text.TextField;


public class Main extends Sprite{
    private const ROT_SPEED:uint=2;
    private const R:uint=22;
    private const D:Number=R*Math.sqrt(3);
    private const DEG_TO_RAD:Number=0.0174532925;
    private const BUBBLE_SPEED:uint=10;
    private var cannon:cannon_mc;
    private var left:Boolean=false;
    private var right:Boolean=false;
    private var bubCont:Sprite;
    private var bubble:bubble_mc;
    private var fire:Boolean=false;
    private var vx,vy:Number;
    private var fieldArray:Array;
    private var chainArray:Array;
    private var connArray:Array;
    private var bubbleScore:int = 0;
    private var bubblesAdded:int = 0;
    private var bubblesRemoved:int = 0;
    private var gameOverBubble = false;
    private var emitter:Emitter2D;
    public function Main() {
        placeCannon();
        placeContainer();
        loadBubble();
        stage.addEventListener(KeyboardEvent.KEY_DOWN, onKDown);
        stage.addEventListener(KeyboardEvent.KEY_UP, onKUp);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, moveMouse);
        stage.addEventListener(MouseEvent.MOUSE_UP, onMUp);
        addEventListener(Event.ENTER_FRAME, onEFrame);
    }
    private function onEFrame(e:Event):void {
        bubbleScoreText.text = "Score: "+bubbleScore;
        if (bubblesRemoved >= bubblesAdded) {
            gameOverBubble = true;
        }
        if (gameOverBubble) {
            stage.removeEventListener(MouseEvent.MOUSE_UP, onMUp);
        }
        if (left) {
            cannon.rotation-=ROT_SPEED;
        }
        if (right) {
            cannon.rotation+=ROT_SPEED;
        }
        if (fire) {
            bubble.x+=vx;
            bubble.y+=vy;
            if (bubble.x<R){
                bubble.x=R;
                vx*=-1;
        }
        if (bubble.x>R*15) {
            bubble.x=R*15
            vx*=-1;
        }
        if (bubble.y<R) {
            parkBubble();
        } else {
            for (var i:uint = 0; i<bubCont.numChildren; i++) {
                var tmp:bubble_mc;
                tmp=bubCont.getChildAt(i) as bubble_mc;
                if (collide(tmp)) {
                    parkBubble();
                    break;
                }
            }
        }
    }
}
    private function placeCannon():void {
        cannon=new cannon_mc();
        addChild(cannon);
        cannon.y=450;
        cannon.x=R*10;
    }
    private function placeContainer():void {
        fieldArray=new Array();
        bubCont=new Sprite();
        addChild(bubCont);
        bubCont.graphics.lineStyle(1,0x000000, 0.2);
        for(var i:uint=0;i<9;i++){
            fieldArray*=new Array();
            for(var j:uint=0;j<8;j++){
                if (i%2==0) {
                bubCont.graphics.drawCircle(R+j*R*2,R+i*D,R);
                fieldArray*[j]=0;
            } else {
                if (j<7) {
                    with (bubCont.graphics) {
                        drawCircle(2*R+j*R*2,R+i*D,R);
                        fieldArray*[j]=0;
                    }
                }
            }
            }
        }
    }
    private function loadBubble():void {
        if (gameOverBubble == false) {
        bubble = new bubble_mc();
        addChild(bubble);
        bubble.gotoAndStop(Math.floor(Math.random()*6))+1;
        } else {
            removeChild(bubble);
        }
        if (bubblesAdded >= 15) {
        bubble.x=R*10;
        bubble.y=450;
        }
        if (bubblesAdded == 0) {
            bubble.x=22;
            bubble.y = 22;
            bubble.gotoAndStop(1);
            parkBubble();
        }
        if (bubblesAdded == 1) {
            bubble.x = 66;
            bubble.y = 22;
            bubble.gotoAndStop(2);
            parkBubble();
        }
        if (bubblesAdded == 2) {
            bubble.x = 110;
            bubble.y = 22;
            bubble.gotoAndStop(3);
            parkBubble();
        }
        if (bubblesAdded == 3) {
            bubble.x = 154;
            bubble.y = 22;
            bubble.gotoAndStop(4);
            parkBubble();
        }
        if (bubblesAdded == 4) {
            bubble.x = 198;
            bubble.y = 22;
            bubble.gotoAndStop(5);
            parkBubble();
        }
        if (bubblesAdded == 5) {
            bubble.x = 242;
            bubble.y = 22;
            bubble.gotoAndStop(4);
            parkBubble();
        }
        if (bubblesAdded == 6) {
            bubble.x = 286;
            bubble.y = 22;
            bubble.gotoAndStop(5);
            parkBubble();
        }
        if (bubblesAdded == 7) {
            bubble.x = 330;
            bubble.y = 22;
            bubble.gotoAndStop(4);
            parkBubble();
        }
        if (bubblesAdded == 8) {
            bubble.x=44;
            bubble.y = 66;
            bubble.gotoAndStop(3);
            parkBubble();
        }
        if (bubblesAdded == 9) {
            bubble.x = 88;
            bubble.y = 66;
            bubble.gotoAndStop(2);
            parkBubble();
        }
        if (bubblesAdded == 10) {
            bubble.x = 132;
            bubble.y = 66;
            bubble.gotoAndStop(1);
            parkBubble();
        }
        if (bubblesAdded == 11) {
            bubble.x = 176;
            bubble.y = 66;
            bubble.gotoAndStop(2);
            parkBubble();
        }
        if (bubblesAdded == 12) {
            bubble.x = 220;
            bubble.y = 66;
            bubble.gotoAndStop(3);
            parkBubble();
        }
        if (bubblesAdded == 13) {
            bubble.x = 264;
            bubble.y = 66;
            bubble.gotoAndStop(4);
            parkBubble();
        }
        if (bubblesAdded == 14) {
            bubble.x = 308;
            bubble.y = 66;
            bubble.gotoAndStop(5);
            parkBubble();
        }
    }
    private function parkBubble():void {
        var row:uint=Math.floor(bubble.y/D);
        var col:uint;
        if (row%2==0) {
            col=Math.floor(bubble.x/(R*2));
        } else {
            col=Math.floor((bubble.x-R)/(R*2));
        }
        var placed_bubble:bubble_mc = new bubble_mc();
        bubCont.addChild(placed_bubble);
        if (row%2==0) {
            placed_bubble.x=(col*R*2)+R;
        } else {
            placed_bubble.x=(col*R*2)+2*R;
        }
            placed_bubble.y=(row*D)+R;
        placed_bubble.gotoAndStop(bubble.currentFrame);
        placed_bubble.name=row+","+col;
        if(fieldArray[row][col]==0) {
        fieldArray[row][col]=bubble.currentFrame;
        } else {
            gameOver();
            gameOverBubble = true;
        }
        chainArray=new Array();
        getChain(row,col);
        if (chainArray.length>2) {
            for (var i:uint=0; i<chainArray.length; i++) {
                with (bubCont) {
                    bubblePop();
                    removeChild(getChildByName(chainArray*));
                    bubbleScore += 100;
                    bubblesRemoved += 1;
                }
                var coords:Array=chainArray*.split(",");
                fieldArray[coords[0]][coords[1]]=0;
            }
            removeNotConnected();
        }
        trace("chain: "+chainArray);
        removeChild(bubble);
        fire=false;
        bubblesAdded += 1;
        loadBubble();
    }
    private function collide(bub:bubble_mc):Boolean {
        var dist_x:Number=bub.x-bubble.x;
        var dist_y:Number=bub.y-bubble.y;
        return Math.sqrt(dist_x*dist_x+dist_y*dist_y)<=2*R-4;
    }
    private function onKDown(e:KeyboardEvent):void {
        switch (e.keyCode) {
            case 37 :
            left=true;
            break;
            case 38 :
            if (! fire) {
                fire=true;
                var radians=(cannon.rotation-90)*DEG_TO_RAD;
                vx=BUBBLE_SPEED*Math.cos(radians);
                vy=BUBBLE_SPEED*Math.sin(radians);
            }
            break;
            case 39 :
            right=true;
            break;
        }
    }
    private function onKUp(e:KeyboardEvent):void{
        switch (e.keyCode) {
            case 37 :
            left=false;
            break;
            case 39 :
            right=false;
            break;
        }
    }
    private function moveMouse(e:MouseEvent):void {
        var dir=Math.atan2(cannon.y-mouseY,cannon.x-mouseX);
        cannon.rotation=dir*180/Math.PI-90;
        if (cannon.rotation<-60) {
            cannon.rotation=-60;
        }
        if(cannon.rotation>45) {
            cannon.rotation=45;
        }
    }
    private function onMUp(e:MouseEvent):void {
        if (! fire) {
                fire=true;
                var radians=(cannon.rotation-90)*DEG_TO_RAD;
                vx=BUBBLE_SPEED*Math.cos(radians);
                vy=BUBBLE_SPEED*Math.sin(radians);
            }
    }
    private function getValue(row:int,col:int):int {
        if (fieldArray[row]==null) {
            return -1;
        }
        if (fieldArray[row][col]==null) {
            return -1;
        }
        return fieldArray[row][col];
    }
    private function isNewChain(row:int,col:int,val:uint):Boolean {
        return val == getValue(row,col)&&chainArray.indexOf(row+","+col)==-1;
    }
    private function getChain(row:int,col:int):void {
        chainArray.push(row+","+col);
        var odd:uint=row%2;
        var match:uint=fieldArray[row][col];
        for (var i:int=-1; i<=1; i++) {
            for (var j:int=-1; j<=1; j++) {
                if (i!=0||j!=0) {
                    if (i==0||j==0||(j==-1&&odd==0)||(j==1&&odd==1)) {
                        if (isNewChain(row+i,col+j,match)) {
                            getChain(row+i,col+j);
                        }
                    }
                }
            }
        }
    }
    private function isNewConnection(row:int,col:int):Boolean {
        return getValue(row,col)>0&&connArray.indexOf(row+","+col)==-1;
    }
    private function getConnections(row:int,col:int):void {
        connArray.push(row+","+col);
        var odd:uint=row%2;
        for (var i:int=-1; i<=1; i++) {
            for (var j:int=-1; j<=1; j++) {
                if (i!=0||j!=0) {
                    if(i==0||j==0||(j==-1&&odd==0)||(j==1&&odd==1)) {
                        if (isNewConnection(row+i,col+j)) {
                            if (row+i==0) {
                                connArray[0]="connected";
                            } else {
                                getConnections(row+i,col+j);
                            }
                        }
                    }
                }
            }
        }
    }
    private function removeNotConnected():void {
        for (var i:uint=1; i<9; i++) {
            for (var j:uint=0; j<8; j++) {
                if (getValue(i,j)>0) {
                    connArray=new Array();
                    getConnections(i,j);
                    if (connArray[0]!="connected") {
                        with (bubCont) {
                            removeChild(getChildByName(i+","+j));
                            bubbleScore += 100;
                            bubblesRemoved += 1;
                        }
                        fieldArray*[j]=0;
                    }
                }
            }
        }
    }
    private function gameOver():void {
        // put gameOver script here
        
        }
    private function bubblePop():void {
         emitter = new Firework();
  
          var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 500, 400 ) );
          renderer.addEmitter( emitter );
          addChild( renderer );
  
              emitter.x = bubble.x;
             emitter.y = bubble.y;
              emitter.start();
    }


}

}