用html5 javascript随机化没有重复的帧

时间:2017-10-14 05:46:26

标签: javascript html5-canvas

超级noob问题在这里。我在下面的as3项目中有以下代码,其中帧编号是随机的,然后单击一个精灵(下一个)将移动到下一个随机帧。我无法弄清楚我还需要做些什么来将其转换为javascript。任何人都可以帮助我或指出我正确的方向吗? TIA!

var sortedNumbers:Array = [];
for(var i:int = 1; i < 21; i++)
{
    sortedNumbers.push(i);
 }
var unsortedNumbers:Array = sortedNumbers.slice();

while(sortedNumbers.join() == unsortedNumbers.join())
{
    unsortedNumbers.sort(function (a:int, b:int):int { return Math.random() > .5 ? -1 : 1; });
}

this.start.addEventListener("click", f_nextRE.bind(this));

function f_nextRE() {
        if(index == 20) {
    gotoAndStop (22);
    }
    else {
    gotoAndStop (unsortedNumbers [index] + 1);
    index +=1;  
    }
}

1 个答案:

答案 0 :(得分:0)

所以我花了几天时间,但是我找到了答案(这个网站上有很多来源的组合)...在这里发帖帮助别人......

//create array
var shuffledFrames = [];
//fill array
for (var i = 1; i <= 35; i++) {
   shuffledFrames.push(i);
}
//shuffle array 
function shuffle(a) {
    var j, x, i;
    for (i = a.length - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i + 1));
        x = a[i];
        a[i] = a[j];
        a[j] = x;
   }
}
//run shuffle function
shuffle(shuffledFrames);
//function to call next random frame then repeat when reaching the end. 
function f_next()
{
    if (shown == 1){
        if (nextF == 35) {
            nextF = 0;
            }
        else {
        nextF += 1;
        }
    this.gotoAndStop (shuffledFrames [nextF]);
    }
}