2010-09-09 3 views
1

Я пытаюсь собрать частицы друг на друга, почти как если бы песок накапливался в часовом стекле.Штабелирующие частицы/круги сколь угодно малого размера в AS3

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

Я застрял на ошибке, которая начинает размещать координаты кругов на 0,0. Это происходит случайным образом, в зависимости от размера и текущего количества кругов. Я не могу сказать, в чем проблема, и мне жаль, что я не могу найти API для чего-то такого, что я мог бы использовать сейчас. Я в огромной щепотке, и любая помощь или идеи очень ценятся!

http://jevinkones.com/circles/

ответ

1

Либо вы распространяющихся х-у скоординировано неправильно, как вы прогресс, или есть какой-то переполнение происходит, когда координаты превышают размер холста, и они недобросовестные (0,0).

Это хороший кандидат для вашего отладчика ActionScript. Каждый раз, когда вы создаете экземпляр круга, вы можете поместить точку разрыва в задание для окружностей x и y. Затем, когда вы заметите, что это нуль, вы можете посмотреть стек вызовов и выяснить, как этот материал вызывается.

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

Надеюсь, это полезно!

-Брайан Дж Stinar-

+0

Hi Brian, Спасибо за ваш ответ. У меня есть x, y отслеживание выходного окна, и я вижу, где все идет не так. Я просто не уверен, что мне нужно изменить в своей логике, чтобы учесть тот результат, который мне нужен. x, y нового круга определяются x, y последнего круга (ов) и их радиуса (для вычисления расстояния). В новой строке он начинается слева и пытается приспособиться к кругам предыдущей строки, вычисляя радиус нового круга с радиусом нижних кругов. Если обнаружено перекрытие, он использует другой круг, чтобы проверить, подходит ли рассчитанный x, y для размещения. – jevinkones

+0

Можете ли вы опубликовать свою реализацию? Существует определенная проблема с вашим обнаружением перекрытия - поскольку окружности, уложенные в (0,0), перекрываются. Возможно, эта проблема связана с фактическим размещением в (0,0) ...? –

0

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

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

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

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

Смежные вопросы