日期:2013-8-14 浏览次数:20165次

  前不久,在一本讲Matlab的书上看到一个例子,用绘图函数画一个小人。

  效果如下:

点击这里下载源文件

  就像下面这样的:

  既然这个小人可以画出来,那么可否让他动呢,我想这个很显然是没有问题的,只要把的身体的各个组成部分分解开就可以了。
  组成这个小人的只有两种组件成分,一个是圆形,一个是线条.
  代码分别如下:

class skelectonCircle
{
    private var x:Number=0;
    private var y:Number=0;
    private var r:Number=0;
    private var lineStyleNum:Number=0x3399FF;
    
    static private var mId:Number=0;
    private var mMcHolder:MovieClip;
       
    public function skelectonCircle(inX:Number,inY:Number,inR:Number,inStyle:Number)
    {
       init(inX,inY,inR,inStyle);
    }
    
    public function init(inX:Number,inY:Number,inR:Number,inStyle:Number):Void
    {
       reset(inX,inY,inR,inStyle);
       
       mMcHolder=_root.createEmptyMovieClip("__SKELETONC__"+mId,_root.getNextHighestDepth());
       mId++;
    }
    
    public function reset(inX:Number,inY:Number,inR:Number,inStyle:Number):Void
    {
       x=inX;
       y=inY;
       r=inR;
       
       if(inStyle!=null||inStyle!=undefined)lineStyleNum=0x3399FF;
       else lineStyleNum=inStyle;
    }
    
    public function draw():Void
    {
       //draw a cicle:    
           mMcHolder.lineStyle(1,lineStyleNum,100);
           //beginFill(0x6666FF);
           //move to the circle’s center.
           mMcHolder.moveTo(x+r,y);
           
           var fi:Number=0;
           var cX:Number=0;
           var cY:Number=0;
           var detaFi:Number=0.1;
           
           while(fi<=2*Math.PI+0.2)
           {
              cX=x+r*Math.cos(fi);
              cY=y+r*Math.sin(fi);
              mMcHolder.lineTo(cX,cY);
              fi+=detaFi;
           }
           //endFill();
    }
    
    public function clean():Void
    {
       mMcHolder.clear();
    }
    
    public function toString():String
    {
       var reString:String=new String();
       
       reString=String("x:"+String(x)+"y:"+String(y)+"r:"+String(r)+"\n");
       
       return reString;
    }
    
    public function finallize():Void
    {
       mMcHolder.removeMovieClip();
       mMcHolder=null;
       delete this;
    }
}

class skelectonLine
{
    private var x1:Numb