Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как упорядочить стек фишек при добавлении фишки (http://www.flasher.ru/forum/showthread.php?t=190590)

stflasher 26.12.2012 07:34

Как упорядочить стек фишек при добавлении фишки
 
В казино рулетки есть стек из фишек, который формируется добавлением фишек. Подскажите, как сортировать фишки в стеке при добавлении каждой фишки по номиналу ?

ramshteks 26.12.2012 08:05

Array.sort с кастомной сравнивающей функцией

stflasher 26.12.2012 08:20

Применяю и нифига не получается. Может что не так делаю.
Код AS3:

 
numStack[sumNum][8].sort();
for (var p2:int = 0; p2<mc.numChildren; p2++) {
 mc.removeChildAt(0)                               
}                       
 
for (var p1:int = 0; p1 < numStack[numberCeil][8].length; p1++) {
 mc.addChild(numStack[numberCeil][8][p1])
}


Hauts 26.12.2012 10:28

stflasher, читать хэлп по Array.sort.

stflasher 26.12.2012 11:15

Код работает, но там почему-то не очищается поле как надо и смещение идёт при добавлении фишек.

caseyryan 26.12.2012 11:39

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

Лучше написать так для очистки:
Код AS3:

while (mc.numChildren) {
  mc.removeChildAt(0);
}

или же для 11 плеера просто
Код AS3:

mc.removeChildren();


stflasher 26.12.2012 12:16

Нее. Ошибку не выдаёт, но криво написано. Понял почему.Спасибо

expl 26.12.2012 16:28

1. Удалять объекты не нужно
Можно просто по-порядку вставлять в нужный индекс
2. Сортировать не нужно
При добавлении фишки идем с конца в начало и сравниваем значение - перестало быть > или < (в зависимости от того в какую сторону сортируем) - останавливаемся и делаем addChildAt

Может здесь не критично, но при лишнем вызове addChild или addChildAt и т.д. объект попадает в область отрисовки, хотя он инкуда не двигался, а если вызывать эти методы только у перемещаемого объекта - область перерисовки останется небольшой.

wvxvw 27.12.2012 02:33

> При добавлении фишки идем с конца в начало
Нет, идем всередину и с шагом уменьшающимся вдвое каждый раз идем или вправо или влево, взависимости от того, было ли значение больше или меньше. Но это если мы предполагаем, что в массиве есть незаполненные промежутки. Как я понимаю, промежутков незаполненных быть не может, т.как фишек всегда постоянное количество. Т.е. тут просто addChildAt один хватит. :)

Или, если фишки нужно сначала рандомально перемешать, а потом сортировать, тогда наверное имеет смысл всех удалить, отсортировать и всех добавить обратно, т.как если реализовывать сортировку самому, то добавлений и удалений из списка отображения получится больше, а это затратная операция.

expl 28.12.2012 18:21

Цитата:

Нет, идем всередину и с шагом уменьшающимся вдвое каждый раз идем или вправо или влево, взависимости от того, было ли значение больше или меньше.
Это если других вариантов нету, потому что это сложно.

Цитата:

Но это если мы предполагаем, что в массиве есть незаполненные промежутки. Как я понимаю, промежутков незаполненных быть не может, т.как фишек всегда постоянное количество. Т.е. тут просто addChildAt один хватит.
Идем мы чтобы сравнивать, а не что-бы что-то двигать. Не понимаю, причем здесь отсутствие промежутков, хотя, какая разница - тема наверно уже не актуальна.


Часовой пояс GMT +4, время: 15:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.