视图排序 sort

本文介绍了一种使用ActionScript 3 (AS3) 实现的层级排序与布局算法。该算法能够根据指定参数对Flash显示对象进行排序和定位,适用于游戏开发或界面布局等场景。同时,文章提供了完整的源代码实现。
package
{
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    
    public class Main extends Sprite
    {
        public function Main()
        {
            var arr:Array = [];
            for(var i:int = 0;i < 10;i++)
            {
                var slot:Slot = new Slot(20,30,i.toString());
                addChild(slot);
                arr.push(slot);
            }
            layerSort(this,arr,20,30,11);
            trace(width,height);
        }
        
        public static function layerSort(parent:DisplayObject,arr:Array, cw:Number,ch:Number,horCount:int):void
        {
            var p:int = 0;
            var index:int = 0;
            var a:int = 0;
            var list:Array = [];
            var obj:Object;
            if(arr.length > horCount)
            {
                a = arr.length / horCount;
                var b:int = arr.length % horCount;
                for(var i:int = 0;i < a;i++)
                {
                    for(var k:int = 0;k <horCount;k++)
                    {
                        index = (i * horCount)  + k;
                        obj = new Object();
                        obj.x = i;
                        obj.y = k;
                        list.push(obj);
                    }
                }
                if(b > 0)
                {
                    for(p = 0;p < b;p++)
                    {
                        index++;
                        obj = new Object();
                        obj.x = a;
                        obj.y = p;
                        list.push(obj);
                    }
                }
            }
            else
            {
                for(p = 0;p < arr.length;p++)
                {
                    index++;
                    obj = new Object();
                    obj.x = a;
                    obj.y = p;
                    list.push(obj);
                }
            }
            
            for(var t:int = 0;t < list.length;t++)
            {
                obj = list[t];
                
                arr[t].x = cw * obj.y;
                arr[t].y = ch * obj.x;
            }
            list = [];
        }
    }
}
import flash.display.Sprite;
import flash.text.TextField;

class Slot extends Sprite
{
    public function Slot(w:Number,h:Number,_name:String):void
    {
        graphics.beginFill(0xff0000,0.5);
        graphics.lineStyle(0.5,0x00ff00);
        graphics.drawRect(0,0,w,h);
        graphics.endFill();
        
        var tf:TextField = new TextField();
        tf.text = _name;
        addChild(tf);
    }
}

 

转载于:https://www.cnblogs.com/jiangjieqim/p/5385832.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值