zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠

    import flash.geom.Rectangle;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    
    var arr:Array = [];
    var dis:Number = 20;//间距
    var len:int=15;//对象数量
    var bound:Rectangle = new Rectangle(0,0,1000,800);//显示范围
    for(var i:int = 0;i<len;i++){
        var obj:Sprite = new Sprite();
        obj.graphics.beginFill(0xcccccc);
        obj.graphics.drawRect(0,0,120,100);
        obj.graphics.endFill();
        obj.name = "obj_"+i;
        arr.push(obj);
        this.addChild(obj);
    }
    reset();
    function reset():void{
        for(var j:int = 0;j<len;j++){
            setPosition(this.getChildByName("obj_"+j) as Sprite);
            //test(this.getChildByName("obj_"+j) as Sprite);
        }
    }
    function setPosition(obj:Sprite):void
    {
        obj.x = Math.random()*(bound.width-obj.width)+bound.x;
        obj.y = Math.random()*(bound.height-obj.height)+bound.y;
        for(var i:int = 0;i<arr.length;i++){
            if(obj != arr[i]){
                //不重叠,没有间距
                /*if(obj.hitTestObject(arr[i])){
                    setPosition(obj);
                    return;
                }*/
                //不重叠,并有一定间距dis,间距为0效果同上
                if(Math.abs(obj.x-arr[i].x)<obj.width+dis&&Math.abs(obj.y-arr[i].y)<obj.height+dis){
                    setPosition(obj);
                    return;
                }
            }
        }
    }
    //检测是否重合
    function test(obj:Sprite):void
    {
        for(var i:int = 0;i<len;i++){
            if(obj != arr[i]){
                if(obj.hitTestObject(arr[i])){
                    trace(obj.name,arr[i].name);
                }
            }
        }
    }
  • 相关阅读:
    Linux脚本文件注释
    Linux三剑客之grep命令
    Linux获取本机IP
    Linux的cut命令详解
    Linux的wc命令详解
    Linux的uniq命令详解
    Linux的sort命令详解
    shell之a+b求和脚本的三种写法
    shell的文件比较运算符和字符串比较运算符
    shell中变量$系列的含义
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4991133.html
Copyright © 2011-2022 走看看