[ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠
2015-11-24 11:50
274 查看
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); } } } }
相关文章推荐
- 读film源代码
- 文本处理命令-三剑客
- 【鸟瞰】UML视频学习
- Spring注入问题需注意的
- Oracle 释放过度使用的Undo表空间
- mybatis 使用经验小结
- strlen源码剖析
- 重装Eclipse(或者更新ADT)出现 appcompat _v7问题解决方法与问题剖析
- 字母图形
- 六十四进制
- shader - 可以使用三种不同的方法
- Ubuntu手机中的Theme运用
- Java中的算术运算符
- Exception:异常分类
- [python]标准比较运算符
- eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?
- 字母图形
- 单例模式 解析——浅显易懂
- iOS-置顶按钮相关
- css background属性的使用方法