Форум 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=173464)

crazyone 04.01.2012 02:04

Цитата:

Сообщение от artcraft (Сообщение 1054883)
если фон не масштабируется, не поворачивается, и сдвигается на целые пиксели, то bitmapData.draw даст наилучшую производительность

Я проверял - масштабирование, повороты и сдвиги через параметр matrix в методе draw на скорость не влияют. То же самое и с другими параметрами метода. На скорость draw влияет только количество пикселей, которые нужно отрисовать в битмапу, так что если повернуть исходное изображение таким образом, что количество пикселей, попадающих в битмапу уменьшится, - скорость отрисовки пропорционально увеличится.

Мне уже лень делать тесты, но, насколько я знаю, быстрее draw только copyPixels.

artcraft 04.01.2012 12:51

Цитата:

Сообщение от crazyone (Сообщение 1054885)
Я проверял - масштабирование, повороты и сдвиги через параметр matrix в методе draw на скорость не влияют. То же самое и с другими параметрами метода. На скорость draw влияет только количество пикселей, которые нужно отрисовать в битмапу, так что если повернуть исходное изображение таким образом, что количество пикселей, попадающих в битмапу уменьшится, - скорость отрисовки пропорционально увеличится.

Мне уже лень делать тесты, но, насколько я знаю, быстрее draw только copyPixels.

действительно я выжил из ума и написал draw когда имел в виду copyPixels

FieryWall 04.01.2012 13:31

copyPixels() действительно хорош, попробовал - появились впечатляющие результаты, scrollRect - вообще не вариант.
Но было бы неплохо если бы мне подсказали как избежать эффекта "победа пасьянс ХР" (наложение новых пикселей на старые) :(

crazyone 04.01.2012 14:22

Конечно же, нужно очистить изображение. Например так:
Код AS3:

bdata.fillRect(bdata.rect,0x00000000);


artcraft 04.01.2012 14:25

bitmapData.fillRect() то что надо для очистки экрана
но очистка нужна только если фон прозрачный, если фон без альфаканала, то достаточно нарисовать новаый фон прямо поверх старого.

FieryWall 04.01.2012 18:50

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

artcraft 04.01.2012 19:34

если я не ошибаюсь, то последний пареметр copyPixels - mergeAlpha отвечает за это


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

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