Предотвращение выбора метки случайного кадра более одного раза as3 - PullRequest
0 голосов
/ 16 ноября 2018

Приведенный ниже код делает то, что мне нужно, чтобы не выбирать случайную метку кадра дважды подряд. Однако мне нужно сделать еще один шаг вперед. Теперь мне также нужно написать этот код так, чтобы любой выбранный случайный кадр выпал из массива и больше не выбирался, точка. Любая помощь в достижении этого будет очень признательна. Вот мой код:

    function getRandomLabel(currentLabel: String): String {
    var labels: Array = ["e1" , "e2", "e3", "e4", "e5", "e6", "e7", "e8" ];
    var currentIndex: int = labels.indexOf(currentLabel);
    if (currentIndex > -1)
        labels.splice(currentIndex, 1);
    var index: Number = Math.floor(Math.random() * labels.length);
    return labels[index];
}

1 Ответ

0 голосов
/ 16 ноября 2018

Довольно просто.Вам нужно сохранить метки вне функции (в вашем коде это локальная переменная функции, которая заполняется при каждом вызове) и извлечь каждую из них по запросу, чтобы в следующий раз ее не было в списке.

var labels:Array = ["e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8"];

function getRandomLabel():String
{
    var anIndex:int = Math.random() * labels.length;
    var result:String = labels[anIndex];

    labels.splice(anIndex, 1);
    return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...