Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отрисовка в битмапдату, Как убрать "кеш"? (http://www.flasher.ru/forum/showthread.php?t=137448)

nOobCrafter 13.03.2010 23:15

Отрисовка в битмапдату, Как убрать "кеш"?
 
Вложений: 1
Собсна решил попробовать отрисовать движение обьекта в битмапу в обработчике ентерфрейма и получается что не происходит "очистка" экрана от старых изображений.
Вместо того что бы каждый раз отрисовывать обьект у меня рисуется линия состоящая из этих обьектов(( Как сделать что бы каждый раз была новая отрисовка? Помниться в ас2 такого "бага" небыло((
Код AS3:

                private var _rect                :Sprite;                // наш прямоугольник который будем двигать
                private var _tempCont                :Sprite;                // контейнер с движущимся прямоугольником, его будем отрисовывать
                private var _tempBitmap                :Bitmap;                //
                private var _tempBitmapData        :BitmapData;                // битмапдата которая осбсна и отрисовывает
 
                public function TestBitmapData_Draw()
                {
                        _rect = drawRoundedRect(10, 10, 4, 0x00CCFF);       
                        _rect.y = (stage.stageHeight - _rect.height) / 2;
 
                        _tempCont = new Sprite();
                        _tempCont.addChild(_rect);
 
                        _tempBitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xFF0000);
                        _tempBitmap = new Bitmap(_tempBitmapData, "auto", true);
 
                        addChild(_tempBitmap);
                        addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
                        TweenLite.to(_rect, 10, { x : (stage.stageWidth - _rect.width), onComplete: onTweenCompleteHandler } );
                }
 
                private function onEnterFrameHandler(e:Event):void
                {
                        _tempBitmap.bitmapData.draw(_tempCont);
        //                _tempBitmapData.draw(_tempCont);
                }
 
                private function onTweenCompleteHandler():void
                {
                        removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
                }

Пример ниже

Zebestov 13.03.2010 23:26

тут же написано в первых строках:

Цитата:

Отображает исходный экранный объект source поверх растрового изображения с помощью векторного средства визуализации проигрывателя Flash Player.
так что, по меньшей мере, такого следовало ожидать.
ну а дальше наверное fillRect() какой-то...

nOobCrafter 13.03.2010 23:48

Zebestov видел в хелпе, и тут еще раза 3 перечитал, но всеранво не понял что они хотели этим сказать, описание весьма мутное имхо, пока это на практике с этим не столкнулся - не понял.
Изменил на так и вссе стало ок:
Код AS3:

                private function onEnterFrameHandler(e:Event):void 
                {
                        _tempBitmapData.fillRect(new Rectangle(0, 0, stage.stageWidth, stage.stageHeight), 0x0000FF00);
                        _tempBitmapData.draw(_tempCont);
                }

Всем спс.

Zebestov 14.03.2010 00:11

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

nOobCrafter 14.03.2010 00:23

Цитата:

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

Ksoo 14.03.2010 06:09

Вложений: 1
Вот здесь не нужно стирать старое

Zebestov 14.03.2010 17:33

winamp когда-то запускал? окно "визуализация" открывал? =) ну вот тебе пример!
а еще в нете видел какую-то анимашку стьобную — там какая-то органика росла поверх старой, уходящей "в туман"... ну навскидку только такие примеры приходят...

nOobCrafter 14.03.2010 20:39

хм, а я думал что как то через lineTo и прочих методов рисования делается.. %)

Zebestov 14.03.2010 21:32

фронт — да! именно так и рисуется =) а на фон эффекты накладывать, каждый раз старый "фронт" добавляя к фону?

sikha 19.05.2011 12:44

А у меня такой вопрос, допустим есть некий объект(область) на экране в него помещаются другие объекты(рисунки), как очистить эту область в которой помещены рисунки*?


Часовой пояс GMT +4, время: 14:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.