主题:  如何实现随机排序???

FlyingBirds

职务:普通成员
等级:1
金币:0.0
发贴:8
#12005/4/25 18:36:26
我在flash中放了n个电影剪辑如何再不重叠的前提下实现随机排序呢???
请各位大虾不吝赐教。。。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#22005/4/25 22:04:42
这n个电影剪辑大小一样吗?



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#32005/4/25 23:08:47



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#42005/4/25 23:10:12
stop();
var clipNum = 5;
//剪辑数,依次命名为:clip1,clip2,...,clipN
var clipWidth = 50;
//剪辑宽度
var clipHeight = 50;
//剪辑高度
var clipMargin = 5;
//剪辑间距
var clipY = 40;
//剪辑垂直坐标
var clipX = (Stage.width-(clipNum*clipWidth+(clipNum-1)*clipMargin))/2-clipWidth/2;
//clipX为第一个剪辑的水平坐标,这里假设剪辑沿舞台水平方向均匀分布,垂直坐标固定
//函数,设置某个剪辑的坐标
function posClip(clipnumber, pos) {
    _root["clip"+clipnumber]._x = clipX+clipWidth*pos+clipMargin*(pos-1);
    _root["clip"+clipnumber]._y = clipY;
}
//数组flag[]用于存放一个标志,初始值全部为0
function arrayClip() {
    var i;
    var flag = new Array();
    for (i=0; i<clipNum; i++) {
        flag[i] = 0;
    }
    //下面来随机排列这n个剪辑
    i = clipNum-1;
    do {
        var tmp = Math.round(Math.random()*10);
        //生成一个随机数
        if (flag[tmp] == 0) {
            //如果相应的标志位为0,则
            flag[tmp] = 1;
            //将标志置1
            posClip(tmp+1, i+1);
            //定位相应的剪辑
            i--;
            //待安置的剪辑数减1
        }
    } while (i>=0);
    //当所有的剪辑被安置好后结束循环
}
arrayClip();
btnRearray.onRelease=function(){
    arrayClip();
};



FlyingBirds

职务:普通成员
等级:1
金币:0.0
发贴:8
#52005/4/26 15:21:09
谢谢拉!!!
我回去好好看看!!!