Уже второй день подряд бьюсь, все никак решение не придумаю.
Нужно нарисовать куб, а потом при нажатии, допустим, на кнопку, сделать так, чтобы он сдвинулся, например, на право на 100 пикселей. Пользую Canvas, но рисовать сразу на нем не могу, потому что не знаю как получить доступ к нему из другого пакета. Отдельный пакет использую потому что в нем у меня класс с аффинными преобразованиями объектов и я не хочу, чтобы весь код был в mxml... Поэтому я добавляю на Canvas методом .addChild() UIComponent , который и содержит куб.
Проблема в том, что когда я пытаюсь перерисовать свой куб, я удаляю у Canvas ранее добавленного ребенка (Canvas очищается), но при добавлении НОВОГО (с измененными координатами) у меня по какой-то причине отображается и предыдущий. Причем, если еще раз попробовать сдвинуть куб, то уже будет 3 куба, еще раз - 4 куба и т.д. Сам Canvas проверял, у него ребенок действительно удаляется.
Вот тут ссылка на результат одного нажатия на кнопку "сдвинуть"
http://imglink.ru/show-image.php?id=5c1b3d...72870918a1f3133
Я думаю весь код кидать нет смысла, поэтому вот только те части методов с которыми проблемы. 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(с);
}
// вызывается по кнопке двинуть куб.
private function moveShape():void{
ar.move(100,0);
var c:UIComponent = new UIComponent();
c.addChild(ar.getShape());
drawSpace.removeAllChildren();
drawSpace.addChild(с);
}
Заранее большое спасибо. ) Уж очень я намучился с этим. Сразу предупреждаю, что до этого c AS никогда не связывался, поэтому любые советы как и на чем рисовать выслушаю с удовольствием. )