![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2011
Сообщений: 3
|
Доброго времени суток.
Уже второй день подряд бьюсь, все никак решение не придумаю. Нужно нарисовать куб, а потом при нажатии, допустим, на кнопку, сделать так, чтобы он сдвинулся, например, на право на 100 пикселей. Пользую Canvas, но рисовать сразу на нем не могу, потому что не знаю как получить доступ к нему из другого пакета. Отдельный пакет использую потому что в нем у меня класс с аффинными преобразованиями объектов и я не хочу, чтобы весь код был в mxml... Поэтому я добавляю на Canvas методом .addChild() UIComponent , который и содержит куб. Проблема в том, что когда я пытаюсь перерисовать свой куб, я удаляю у Canvas ранее добавленного ребенка (Canvas очищается), но при добавлении НОВОГО (с измененными координатами) у меня по какой-то причине отображается и предыдущий. Причем, если еще раз попробовать сдвинуть куб, то уже будет 3 куба, еще раз - 4 куба и т.д. Сам Canvas проверял, у него ребенок действительно удаляется. Где-то все равно остается инфа о предыдущих детях, которые я добавлял (наверное), но где -никак не пойму.... Вот тут ссылка на результат одного нажатия на кнопку "сдвинуть" http://imglink.ru/show-image.php?id=...2870918a1f3133 Я думаю весь код кидать нет смысла, поэтому вот только те части методов с которыми проблемы. ar - это экземпляр моего класса - с ним все должно быть хорошо. <mx:Canvas width="392" height="446" backgroundColor="#FFFFFF" id="drawSpace" y="10" click="moveShape()" x="124"/> // метод, который изначально отображает куб. private function drawBox():void{ var c:UIComponent = new UIComponent(); c.addChild(ar.getShape()); drawSpace.addChild(c); } // вызывается по кнопке двинуть куб. private function moveShape():void{ ar.move(100,0); var c:UIComponent = new UIComponent(); c.addChild(ar.getShape()); drawSpace.removeAllChildren(); drawSpace.addChild(c); } |
|
|||||
|
Что вот тут?
Цитата:
Цитата:
|
|
|||||
|
Регистрация: May 2011
Сообщений: 3
|
Здравствуйте, Alatar.
ar.getShape() - возвращает объект типа Shape. У меня в отдельном классе этот объект отрисовывается. Там мои методы обычных аффинных преобразований над объектом в пространстве и его проецирования на плоскость. Если имеет смысл, могу кинуть код, однако, думаю, что это к многоразовому отображению не относится. Цитата:
Цитата:
Цитата:
Спасибо большое, за ответ. ) |
|
|||||
|
Цитата:
Цитата:
Цитата:
Цитата:
![]() |
|
|||||
|
Регистрация: May 2011
Сообщений: 3
|
Спасибо за ответ.
Извините, что так долго отвечал - учеба не давала возможности расслабиться и перепроверить код на всякий случай - ошибку так и не нашел. А главное, я даже гипотетически не могу представить, что там может обрабатываться не так. И через приблизительно 40 минут после вышенаписанных слов все-таки нашел проблему с отображением. Как вы правильно заметили - ошибка именно в моем коде класса с преобразованиями, а отнюдь не с детьми... По своей невнимательности, совсем не заметил, что хотя я меняю координаты фигуры в пространстве и потом отрисовываю фигуру на Shape, не очищаю Shape после каждом сдвиге или повороте фигуры...... Цитата:
Цитата:
Так или иначе, в любом случае спасибо, что ответили - никогда еще так долго не мучился с одной проблемой в коде... ) |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|