| 
Roughly, we know that things in the far distance will appear smaller. So, to
     make 3D, we can make scale=100/z; That means an ball in 2 m distance will
    be scale as half, that is scale=50; By this, we can make a beautiful 3D. 
  scale=100/z;
  _xscale=_yscale=scale;
  _x=x*scale;
  _y=y*scale;
 Compare with common 3d equation : zoom*z0/(z0+z), it is very simillar
              if we put z0 very small. Here is the diagram showing why the scale should be zoom*z0/(z0+z);  Or,
              in the form of M/(N+z); You can adjust M and N to get different
              effect.
 If you like to know more, macromedia has an article telling
              why and what is the equation.
 
  
              Well, if we got a camera to take a picture of an object. We get
              different photo according to several parameters.1. Usually camera
              has a zooming option. We can make the picture zoom in and out,
            but basically the pictures looks the same except the size.
 2. A landscape
              picture will looks different if we take it from far distance or
              take it from near distance. Definitely it is bigger when we take
              the picture in the near. However, it is not only the "size",
            they looks different. It is not just a zoom effect.
 3. When we take
              a picture to an object. It is different whether we are taking it
              over head or take it from beneath; Of course it would be different
              if we take it from the left or right. I will explain the Yshift
            only. It is similar for Xshift.
 Here is the 3 constant; zoom, focus, Yshift. Below is the movie showing the different apperace
              when 3 constants are changed. The movie contains 6 balls. The x,y
              are 0 for these 6 balls. Only the z is 0-60-120-180-240-300; So
              they are aligned along the Z axis. 
			 Here is the code:
 
zoomZ = 100;
PZ = {x:150, y:250};
focus = 100;
shiftY=50;
function f3dscale(z) {
    var scale = 100*zoomZ/(focus+z);
    return scale;
}
function update3dObject(clip) {
    with (clip) {
        var x3d = x*f3dscale(z)/100+PZ.x;
        var y3d = (y+shiftY)*f3dscale(z)/100+PZ.y;
        var Y0z0=shiftY*f3dscale(0)/100;
        var pt2 = {x:x3d, y:y3d};
        _xscale = _root.f3dScale(z);
        _yscale = _root.f3dScale(z);
        _x = pt2.x;
        _y = pt2.y-Y0z0;
        swapDepths(10000-z);
    }
}
Download the source code of this
            prototype 
 |