# addEventListener not working properly

**URL:** <https://forum.kirupa.com/t/addeventlistener-not-working-properly/300659>\
**Category:** flash\
**Created:** [November 25, 2009, 7:25am UTC](https://forum.kirupa.com/t/addeventlistener-not-working-properly/300659 "2009-11-25T07:25:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![n000bie](https://avatars.discourse-cdn.com/v4/letter/n/7993a0/32.png) [@n000bie](https://forum.kirupa.com/u/n000bie)\
**Post date:** [November 25, 2009, 7:25am UTC](https://forum.kirupa.com/t/addeventlistener-not-working-properly/300659/1 "2009-11-25T07:25:13Z")

</div>

Mouse.CLICK is not working properly when i click the movie clips.

I have generated a random grid from movie clips stored in timeline. When I click on the movie clips, it should show a trace statement, but it is not working properly. Sometimes it shows the trace message, sometimes it does not show.

My code is like this

```auto
package 
{
    import flash.display.*;
    import flash.events.*;
    
    public class Main extends MovieClip
    {
        static const numPieces:uint = 7;  
        static const spacing:Number = 45; 
        static const offsetX:Number = 10; 
        static const offsetY:Number = 10;  
        
        private var gameSprite:Sprite;
        private var grid:Array;
        private var newPiece:Piece;
        
        
        public function Main() 
        {
            grid = new Array();
            for (var gridrows:int=0; gridrows<8; gridrows++) {
                grid.push(new Array());
            }
            setupGrid();
        }
        
        public function setupGrid() 
        {
        gameSprite = new Sprite();
        
        for (var col:int=0; col<8; col++) 
        {
            for (var row:int=0; row<8; row++) {
                addPiece(col,row);
            }
        }
        addChild(gameSprite);
        }
        
        public function addPiece(col, row:int):Piece 
        {
            var newPiece:Piece = new Piece();
            newPiece.x = col*spacing+offsetX;
            newPiece.y = row*spacing+offsetY;
            newPiece.col = col;
            newPiece.row = row;
            newPiece.type = Math.ceil(Math.random()*7);
            newPiece.gotoAndStop(newPiece.type);
            gameSprite.addChild(newPiece);
            grid[col][row] = newPiece;
            newPiece.addEventListener(MouseEvent.CLICK,clickPiece);
            return newPiece;
        }
        
        public function clickPiece(e:Event) 
        {
            trace('hello');
        }
        
    }
    
}

```

and please someone tell me what this code does… I copied it from some tutorial site…

inside Main function

grid = new Array();  
for (var gridrows:int=0; gridrows\<8; gridrows++) {  
grid.push(new Array());  
}

inside addPiece function  
grid[col][row] = newPiece;

Any help … much appreciated…
