【问题标题】:Pick random Element of an Array Actionscript 3选择数组 Actionscript 3 的随机元素
【发布时间】:2011-10-27 08:28:59
【问题描述】:

我有一系列电影剪辑,我想把它们放到舞台上。所以它们必须是唯一的并且是随机选择的。

我该怎么做?

感谢您的宝贵时间

【问题讨论】:

    标签: arrays actionscript-3 actionscript random


    【解决方案1】:

    您可以使用Math.random() 获取一个随机数,这将返回一个介于 0 和 1 之间的数字。

    因此,要获取数组的随机元素,请使用:

    function getRandomElementOf(array:Array):Object {
        var idx:int=Math.floor(Math.random() * array.length);
        return array[idx];
    }
    

    【讨论】:

    • 嗨,谢谢你的回答,但是我怎样才能把它们放在satge上呢?我试过 addChild(array[idx]) 但不工作;
    • stage.addChild(getRandomElementOf(movieClipArray)); 或 stage.addElement(getRandomElementOf(movieClipArray));
    • 你需要在添加之前已经设置了movieclips的x和y属性(或者你甚至可以在添加之后进行)
    • 我有 mc 的 x 和 y var min_x:Number = stage.x - 2 * (breite / 4) - 50; var max_x:Number = stage.x - (breite / 4) - 50; var mid_x:Number = stage.x - 50; var min_y:Number = 0; var max_y:Number = hoehe / 2; var mid_y:Number = hoehe; var n:uint = array1.length; for (var i:uint = 0; i
    • 效果很好...我试过使用 addChild 一切都很好
    【解决方案2】:

    如果您已经有Array,您应该能够定义随机排序,然后您可以根据需要将它们添加到舞台。

    //get your array as needed...
    var myArray:Array = getYourMovieClipsArray();
    
    //randomize it by "sorting" it...
    myArray.sort(randomSort);
    
    //do something with them...
    for(var i:int=0;i<myArray.length;i++){
        addChild(myArray[i]);
    }
    
    
    
    //sorting function
    public function randomSort(objA:Object, objB:Object):int{
        return Math.round(Math.random() * 2) - 1;
    }
    

    【讨论】:

    • 既然可以得到随机索引,为什么还要对数组进行排序和重新排列?
    • 我推测 OP 问题中关于“独特”的评论表明他想确保剪辑不会被多次拉出。如果需要,您可以创建一个索引数组以匹配影片剪辑数组...随机化索引数组...然后从随机列表中一次抽取 1 个,直到完成以确保没有重复。
    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2014-06-19
    相关资源
    最近更新 更多