Всем привет! Столкнулся с такой проблемой: компонент graphics рисует только на фоне. То есть за всеми объектами Bitmap,добавленными на сцену. Мне же нужно рисовать через graphics поверх битмапов. Как это сделать?
Вот мой код:
Casperovskii
Всё через addChild будет поверх graphics. Создать отдельный Child для рисования (в контейнер с другими) и добавить ему enterFrame, где он будет постоянно перемещаться поверх всех остальных children. Это точно работает, но есть дополнительный enterFrame. Такое моё решение, использую для админ- и trace- панелей, которые всегда должны быть поверх остального.
XELAD насчет проверки в каждом кадре я считаю немного тупой идеей) лучше сделать чтобы работало событие added, которое бы при каждом изменении количества дочерних элементов ставила его на верхний уровень выражением setChildIndex(ссылка_на_спрайт, numChildren-1);
sasha^
Отличное событие, если оно должно исполняться редко и при addChild, то самое то для использования.
Я сам в тот enterFrame ещё много чего добавляю, поэтому только сменой глубины код не ограничивается. Но да, event.ADDED, верное событие, главное добавить if(numChildren > 1), иначе error будет.
package { import flash.display.DisplayObject; import flash.display.Shape; import flash.display.Sprite; public class MySprite extends Sprite { private var _canvas:Shape; public function MySprite() { _canvas = new Shape(); addChildAt(_canvas, 0); } override public function addChild(child:DisplayObject):DisplayObject { return addChildAt(child, getChildIndex(_canvas)); } }}
Так же можно и сам геттер графикса просто переопределить да и все
Хотя лучше будет наверно завести еще один объект Graphics, чтоб оставить возможность и на фоне рисовать тоже.