Problem about depth

when I learned in as2.I used “swapdepth” to control the depth of object.but
now I don’t know how in as3.Here is my code.What I want to do is to rotate
the eight ball like 3d.
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import mx.core.MovieClipAsset;
import math.*;
public class myEmbed extends Sprite
{
[Embed(source=“assets/ball.swf”,symbol=“ball”)]
private var Ball:Class;
private var balls:Array;
private var numBalls:Number=8;
private var pointsArray:Array;
private var myRotations:Object;
private var screenPoints:Array;
public function myEmbed()
{

init();
}
private function init():void{
pointsArray=[
my3D.Make3DPoints(-50,-50,-50),
my3D.Make3DPoints(50,-50,-50),
my3D.Make3DPoints(50,-50,50),
my3D.Make3DPoints(-50,-50,50),
my3D.Make3DPoints(-50,50,-50),
my3D.Make3DPoints(50,50,-50),
my3D.Make3DPoints(50,50,50),
my3D.Make3DPoints(-50,50,50)
];
myRotations=my3D.Make3DPoints(0,0,0);
balls=new Array();
for(var i:uint=0;i<numBalls;i++){
var ball:MovieClipAsset=new Ball();
addChild(ball);
ball.x=Math.random()400;
ball.y=Math.random()400;
balls.push(ball);
}
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
public function onEnterFrame(event:Event):void{
myRotations.y-=.02
myRotations.x+=.02
screenPoints = my3D1.Transform3DPointsTo2DPoints(pointsArray, myRotations);
for (var i:uint=0; i<pointsArray.length; i++){
var ball:MovieClipAsset=balls
;
ball.x = screenPoints
.x+100;
ball.y = screenPoints*.y+100;
ball.scaleX = ball.scaleY = screenPoints*.ratio;
[SIZE=3]/when i use this function .and run the project .it appear “RangeError: Error #2006: The supplied index is out of bounds”.and if remove it ,it looks wrong obviously.now i don’t how to change it/ [/SIZE]
setChildIndex(ball, screenPoints*.depth);

} }}}
Make3DPoints and Transform3DPointsTo2DPoints are my static function.here is code:
package math{
public class my3D{

public static function Make3DPoints(x:Number,y:Number,z:Number):Object{
var point:Object=new Object();
point.x=x;
point.y=y;
point.z=z;
return point;
}
public static function make2DPoint(x:Number, y:Number, depth:Number, ratio:Number):Object{
var point:Object = new Object();
point.x = x;
point.y = y;
point.depth = depth;
point.ratio = ratio;
return point;
}
}
}
package math{
public class my3D1{
public static function Transform3DPointsTo2DPoints(points:Array,rotations :Object):Array{
var d:Number=250;
var myArray:Array=new Array();
var sx:Number= Math.sin(rotations.x);
var cx:Number= Math.cos(rotations.x);
var sy:Number= Math.sin(rotations.y);
var cy:Number = Math.cos(rotations.y);
var sz:Number= Math.sin(rotations.z);
var cz:Number= Math.cos(rotations.z);
var i:uint = points.length;
while (i–){
var x:Number = points*.x;
var y:Number= points*.y;
var z:Number = points*.z;
var xy:Number = cxy - sxz;
var xz:Number = sxy + cxz;
var yz:Number = cyxz - syx;
var yx:Number = syxz + cyx;
var zx:Number = czyx - szxy;
var zy:Number = szyx + czxy;
var ratio:Number = d/(d + yz);
x = zxratio;
y= zy
ratio;
z = yz;
myArray* = my3D.make2DPoint(x,y,-z,ratio);
}
return myArray;

}
}
}