Conv.stop
В коде рулетки есть несколько недочетов. Нам нужно всегда знать, сколько продлится то или иное действие. Почему именно по пятьдесят кадров на анимацию проигрыша для ставки. А для выигрыша точно сто. Ведь расстояние от стартового до финального положения у каждой ставки – разное. На нас опять накладываются ограничения.
Механизм конвейера предлагает на этот счет следующие решения:
Первое
Не задавать значение паузы для такого действия явно. Почему бы не остановить конвейер, когда действие начнет выполняться, а когда действие закончится, то компонент, который совершает действие, отрапортует, что действие закончил. Просто запустит конвейер.
То есть, когда компонент выполняет действие, он останавливает конвейер, а когда закончил, то запускает конвейер, и начнет выполняться следующее действие.
Опишем эти методы для остановки и запуска конвейера:
| Conv.stop |
Conv.stop();
Метод останавливает конвейер. Никакие действия не выполняются. Новые действия могут быть помещены в конвейер, но не будут выполняться.
|
| Conv.play |
Conv.play();
Метод запускает конвейер.
|
В соответствии с данным решением перепишем код рулетки.
Нам будет нужно отказаться от методов looses и wins. И в цикле перебрать ставки и вызвать у них методы выигрыша-проигрыша.
private function spin() { this.lock(); // вычислить игровой результат this.createGameResult(); // начать движение колеса // (время 100 кадров) Conv.put(this, "startWeel", "100"); // остановить колесо Conv.put(this, "stopWeel", 0); // озвучить игровой результат // время - две секунды Conv.put(this, "gameSounds", 2000); // анимационно убрать // проигравшие ставки for (
var i=0;
i<this.looses_array.length;
i++) { Conv.put(this.looses_array[i],
"loose", 0); } // анимационно показать // выигрыш у каждой ставки for (
var i=0;
i<this.wins_array.length;
i++) { Conv.put(this.wins_array[i],
"win", 0); } // разблокировать интерфейс
// игрового приложения Conv.put(this, "unlock", 0) }
|
Как видно из данного кода, мы не указываем время выполнения анимации выигрыша-проигрыша у ставок. Мы просто помещаем их в список конвейера. Но они сами «знают», сколько продлится их работа, и выполнят всю работу слаженно и последовательно.
Уже лучше. В данном случае это работает. Но по сравнению с первым вариантом, код немного потерял ясность. Да, не все проблемы можно решить просто остановкой и стартом конвейера.
Предыдущая часть | Следующая часть
[1] [2] [3] [4] [5] [6] [7] |