Рисование поверх Bitmap

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Рисование поверх Bitmap

Сообщение Casperovskii »

Всем привет! Столкнулся с такой проблемой: компонент graphics рисует только на фоне. То есть за всеми объектами Bitmap,добавленными на сцену. Мне же нужно рисовать через graphics поверх битмапов. Как это сделать?
Вот мой код:

Код: Выделить всё

addChild(bgImage);addChild(barBorderImage);graphics.beginFill(0x54F864);graphics.drawRect(barX,barY,Math.round((barWidth)*currProg/mProg),barHeight);
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Рисование поверх Bitmap

Сообщение XELAD »

Casperovskii
Всё через addChild будет поверх graphics. Создать отдельный Child для рисования (в контейнер с другими) и добавить ему enterFrame, где он будет постоянно перемещаться поверх всех остальных children. Это точно работает, но есть дополнительный enterFrame. Такое моё решение, использую для админ- и trace- панелей, которые всегда должны быть поверх остального.
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Рисование поверх Bitmap

Сообщение Casperovskii »

XELAD
А сработает ли так: отдельный класс/объект, где будет только graphics, и уже в нем рисовать?
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Рисование поверх Bitmap

Сообщение XELAD »

Casperovskii
Если объект класса будет добавлен через addChild, то можно что угодно, разве что добавлять его нужно поверх bitmap.
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Рисование поверх Bitmap

Сообщение sasha^ »

XELAD насчет проверки в каждом кадре я считаю немного тупой идеей) лучше сделать чтобы работало событие added, которое бы при каждом изменении количества дочерних элементов ставила его на верхний уровень выражением setChildIndex(ссылка_на_спрайт, numChildren-1);
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Рисование поверх Bitmap

Сообщение XELAD »

sasha^
Отличное событие, если оно должно исполняться редко и при addChild, то самое то для использования.
Я сам в тот enterFrame ещё много чего добавляю, поэтому только сменой глубины код не ограничивается. Но да, event.ADDED, верное событие, главное добавить if(numChildren > 1), иначе error будет.
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

Re: Рисование поверх Bitmap

Сообщение IndieGD »

Можно и вовсе без событий обойтись просто переопределив метод addChild().

Код: Выделить всё

 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, чтоб оставить возможность и на фоне рисовать тоже.
Ответить