<<  
>>

...adding motion

  Add some values which govern the rate of change in x and y...
   

The following line is changed...
    initOb={ _x:random( 600 ) - 300, _y:random( 300 ) - 150 };
... so that the init object is also given values for dx and dy:
    initOb={_x:random(600)-300,_y:random(300)-150,dx:Math.random()*10-5 ,dy:Math.random()*10-5}
 

  Add a function to the start of the script which adds the values of dx and dy to _x and _y...
   

update=function ()
{
    this._x+=this.dx;
    if (Math.abs(this._x) > 300)
   {
        this.dx*= -1;
   }
    this._y+=this.dy;
    if (Math.abs(this._y) > 150)
    {
        this.dy*= -1;
    }
}
...the 'if' statements are included to make the squares bounce at the edges of the stage by reversing the direction of dx and dy. If you really need to reduce line count the function can be written as:
update=function () {
    this._x+=this.dx;
    if (Math.abs(this._x) > 300) this.dx *= -1;
    this._y+=this.dy;
    if (Math.abs(this._y) > 150) this.dy *= -1;
}

...(you don't need the brackets if there's only one command following the 'if')
 

  Make each square call the update function using its onEnterFrame event handler...
    Add a line after the duplication of each square so that the whole creation loop is now:
for(i = 2; i < 200; i++)
{
    initOb={_x:random(600)-300,_y:random(300)-150,dx:Math.random()*10-5,dy:Math.random()*10-5}
    _root.drawing.sq.duplicateMovieClip("s"+i,i,initOb);
    _root.drawing["s"+i].onEnterFrame=_root.update;
}
 

open raw text script...
paste the script into the first frame of an empty flash file (set script window to expert mode first),
The stage should be 600x300 with a dark background - 30fps or more...