Flash 2D/2.5D 简单的Y轴深度排序

from happy milk:

用三个类来说明。

人物类

public class Avatar extends Sprite{

    public var depth:int; //主人公在map地图中的深度  

    public function Avatar():void{
        //人物样式不管

    }

}



更新障碍物和人物在map地图中的深度类

public class Solve

{ 

    //初始化map中的所有子级实例

    public static function initIndex (map:DisplayObjectContainer , avatar:Avatar):Array

    {

        var arr:Array = [ ];

        for(var i:int;i < map.numChildren;i++){

            var dis:DisplayObject = map.getChildAt(i);       

            if(dis is Avatar){

              avatar.depth = i;

            }else{

              if(dis is Sprite && dis.name != "back") {//分析为障碍物 而且不是 back 背景

                arr[i] = [dis , i]; 

                                                    }

            } 

            return arr;

        }

    }

}



寻路走路类

public class Road

{

    private var map:MovieClip;    //地图

    private var block:Array = [ ];    //障碍物

    private var avatar:Avatar;     //人物


    //内有函数update -- 人物行走过程中 以帧频去循环或者setInterval或者Timer都可以

    //其中省去了一些具体操作函数

    private function init():void

    {

        block = Solve.initIndex(map,avatar);//更新深度信息

    }

    private function update():void

    {

        var len:int = block.length;

        for(var i:int;i < len;i++)

        {

            var dis:DisplayObject = block[i][0];//障碍物

            var depth:int = block[i][1];    //障碍物深度

             if((avatar.y >= dis.y && avatar.depth < depth) || (avatar.y <= dis.y && avatar.depth >depth))

            {

                map.setChildIndex(avatar,depth);

                Solve.initIndex(map,avatar);//更新深度信息

            }

        }

    }

}


你可能感兴趣的:(职场,Flash,休闲,简单的Y轴深度排序)