Показать сообщение отдельно
  #1 (permalink)  
Старый 14.01.2017, 12:10
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

Как вернуть результат функции в литерал объекта
Всем здасьте, Пытаюсь написать скрипт рулетки. Ссылка на файлы
Затык в следующем - при нажатии на кнопку start запускается function updateNumber().
updateNumber() - должна переопределять значение литерала объектов
param1.stopImageNumber,
param2.stopImageNumber,
param3.stopImageNumber
Однако переопределения не происходит.
Подозреваю, что новые значения остаются в локальной области видимости.
Как переопределить значения литерала объектов
$(function(){  
 
    // функция генерации случайного значения
    function randomInteger(min, max) {
        var rand = min - 0.5 + Math.random() * (max - min + 1);
        rand = Math.round(rand);
        return rand;
    }
 
    // задаём интервал для генерации случайного значения
    var numMin = 0;
    var numMax = 5;
 
    var win = true // переключатель возможности выигрыша
    var a;
 
    // функция генерации нового случайного значения stopImageNumber
    function updateNumber(){
        if(win){// совпадения допускаются
            param1.stopImageNumber = randomInteger(numMin, numMax);
            param2.stopImageNumber = randomInteger(numMin, numMax);
            param3.stopImageNumber = randomInteger(numMin, numMax);
        }
        else{// совпадения НЕ допускаются
            param1.stopImageNumber = randomInteger(numMin, numMax);
            param2.stopImageNumber = randomInteger(numMin, numMax);
            param3.stopImageNumber = randomInteger(numMin, numMax);
            // в случае совпадения
            if(param2.stopImageNumber == param1.stopImageNumber &&
            param2.stopImageNumber == param3.stopImageNumber){
                param2.stopImageNumber = param1.stopImageNumber + 1;
                param3.stopImageNumber = param1.stopImageNumber - 1;
            }
        }
    }
 
    // задаём параметры 1-го слота
    var param1 = {
        speed : 5,
        duration : 1,
        stopImageNumber : a,
        startCallback : function() {
            $('.start').attr('disabled', 'true');
            $('.stop').removeAttr('disabled');
        },
        slowDownCallback : function() {
            $('.stop').attr('disabled', 'true');
        },
        stopCallback : function($stopElm) {
            $('.start').removeAttr('disabled');
            $('.stop').attr('disabled', 'true');
        }
    }
 
    // задаём параметры 2-го слота
    var param2 = {
        speed : 10,
        duration : 2,
        stopImageNumber : a
    }
 
    // задаём параметры 3-го слота
    var param3 = {
        speed : 8,
        duration : 2,
        stopImageNumber : a
    }
 
    // применяем метод roulette() к слотам
    var rouletter1 = $('div.roulette-1');
    rouletter1.roulette(param1);
    var rouletter2 = $('div.roulette-2');
    rouletter2.roulette(param2);
    var rouletter3 = $('div.roulette-3');
    rouletter3.roulette(param3);
 
    // обработчики кнопок
    $('.stop').click(function(){
        rouletter1.roulette('stop');  
        rouletter2.roulette('stop');  
        rouletter3.roulette('stop');
    });
 
    $('.stop').attr('disabled', 'true');
 
    $('.start').click(function(){
        rouletter1.roulette('start');
        rouletter2.roulette('start');
        rouletter3.roulette('start');
        updateNumber(); // запуск апдейта
    });
});

ссылка на все файлы
https://yadi.sk/d/z-R27m_o38uHkT
Ответить с цитированием