![]() |
Как упорядочить стек фишек при добавлении фишки
В казино рулетки есть стек из фишек, который формируется добавлением фишек. Подскажите, как сортировать фишки в стеке при добавлении каждой фишки по номиналу ?
|
Array.sort с кастомной сравнивающей функцией
|
Применяю и нифига не получается. Может что не так делаю.
Код AS3:
|
stflasher, читать хэлп по Array.sort.
|
Код работает, но там почему-то не очищается поле как надо и смещение идёт при добавлении фишек.
|
Потому что код не верный. Итератор в цикле возрастает, а количество фишек уменьшеается. Меня удивляет как это вообще работает и не выкидывает ошибку (хотя, что-то мне подсказывает, что ошибка все-таки вылетает).
Лучше написать так для очистки: Код AS3:
Код AS3:
|
Нее. Ошибку не выдаёт, но криво написано. Понял почему.Спасибо
|
1. Удалять объекты не нужно
Можно просто по-порядку вставлять в нужный индекс 2. Сортировать не нужно При добавлении фишки идем с конца в начало и сравниваем значение - перестало быть > или < (в зависимости от того в какую сторону сортируем) - останавливаемся и делаем addChildAt Может здесь не критично, но при лишнем вызове addChild или addChildAt и т.д. объект попадает в область отрисовки, хотя он инкуда не двигался, а если вызывать эти методы только у перемещаемого объекта - область перерисовки останется небольшой. |
> При добавлении фишки идем с конца в начало
Нет, идем всередину и с шагом уменьшающимся вдвое каждый раз идем или вправо или влево, взависимости от того, было ли значение больше или меньше. Но это если мы предполагаем, что в массиве есть незаполненные промежутки. Как я понимаю, промежутков незаполненных быть не может, т.как фишек всегда постоянное количество. Т.е. тут просто addChildAt один хватит. :) Или, если фишки нужно сначала рандомально перемешать, а потом сортировать, тогда наверное имеет смысл всех удалить, отсортировать и всех добавить обратно, т.как если реализовывать сортировку самому, то добавлений и удалений из списка отображения получится больше, а это затратная операция. |
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 15:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.