The Actionscript
The actions in the second frame provide the driving force behind the circle collisions .FLA. I've placed comments along the way to help you understand what's happening.
Comment: ----------------------------------------------
Comment: start move
Comment: ----------------------------------------------
Set Variable: "my_radius" = (GetProperty ("", _width) / 2)
Comment: 'n' is always 'name' of circle.
Set Variable: "my_x" = GetProperty("",_x)
Set Variable: "my_y" = GetProperty("",_y)
Set Variable: "my_n" = GetProperty("",_name)
If (ymov="")
Comment: *********************************
Comment: ----------------------------------------------
Comment: first run through code,
Comment: this will initialize circle
Comment: ----------------------------------------------
Comment: *********************************
Comment: pick a distance:
Set Variable: "ymov" = Random(/:speed)+1
Set Variable: "xmov" = Random(/:speed)+1
Comment:
Comment: pick a direction:
Set Variable: "ysign" = random(2)-1
If (ysign=0)
Set Variable: "ysign" = 1
End If
Set Variable: "xsign" = random(2)-1
If (xsign=0)
Set Variable: "xsign" = 1
End If
Comment: adjust x and y movement
Set Variable: "xmov" = xmov*xsign
Set Variable: "ymov" = ymov*ysign
Comment: ----------------------------------------------
End If
Comment: *********************************
Comment: ----------------------------------------------
Comment: check edges
Comment: ----------------------------------------------
If (my_x<=my_radius+/:speed)
Set Variable: "xmov" = xmov*-1
Set Variable: "my_x" = my_radius+/:speed
End If
If (my_y<=my_radius+/:speed)
Set Variable: "ymov" = ymov*-1
Set Variable: "my_y" = my_radius+/:speed
End If
If (my_x>=/:movie_width-my_radius-/:speed)
Set Variable: "xmov" = xmov*-1
Set Variable: "my_x" = /:movie_width-my_radius-/:speed
End If
If (my_y>=/:movie_height-my_radius-/:speed)
Set Variable: "ymov" = ymov*-1
Set Variable: "my_y" = /:movie_height-my_radius-/:speed
End If
Comment: ----------------------------------------------
Comment: check for collision
Comment: ----------------------------------------------
Set Variable: "n" = 1
Comment: start checking for collisions
Loop While (n<=/:total_circles)
//Comment: don't check myself
If (n ne my_n)
Set Variable: "n_x" = GetProperty("../"&n,_x)
Set Variable: "n_y" = GetProperty("../"&n,_y)
Set Variable: "n_radius" = (GetProperty ("../"&n, _width) / 2)
Set Variable: "delta_x" = (my_x+xmov)-(n_x)
Set Variable: "delta_y" = (my_y+ymov)-(n_y)
If ((delta_x * delta_x + delta_y * delta_y) < ((my_radius + n_radius) * (my_radius + n_radius)))
Comment: ----------------------------------------------
Comment: handle collisions
Comment: ----------------------------------------------
Comment: I collided with circle 'n'.
Set Variable: "nx" = Eval("../"&n&":xmov")
Set Variable: "ny" = Eval("../"&n&":ymov")
Comment: swap travel values with it.
Set Variable: "tempx" = xmov
Set Variable: "xmov" = nx
Set Variable: "../"&n&":xmov" = tempx
Set Variable: "tempy" = ymov
Set Variable: "ymov" = ny
Set Variable: "../"&n&":ymov" = tempy
Set Variable: "../"&n&":collision" = my_n
Else
End If
End If
Set Variable: "n" = n+1
End Loop
Comment: ----------------------------------------------
Comment: move me
Comment: ----------------------------------------------
Set Property ("", X Position) = my_x + xmov
Set Property ("", Y Position) = my_y + ymov
Comment: ----------------------------------------------

Finally, the action in the third frame loops back to the second to keep the movie flowing and checking for collisions.
Go to and Play (_currentframe-1)

It's that easy. It's a really simple concept with lots of potential, especially in games. I hope this has inspired you! Good luck and happy flashing.