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

Djuice 21.03.2011 22:55

Динамический фон
 
Доброго времени суток! Я делаю динамический фон для игры. Рандомно на большой мувиклип "набрасываю" маленькие мувики. Рандом также и по скейлу. Потом с полученного мувика делаю битмап через битмапдату
Код AS3:

_data_fon3.draw(fon1);
fon_bitmap.bitmapData = _data_fon3;

Проблемма в том, что очень долго формирует этот фон. Пробовал набрасывать прямо на битмапдату через copyPixels, но почему-то не видит альфа-канал и альфу перебрасывает в простой белый. Какие будут предложения?

kseniya 21.03.2011 23:11

Цитата:

Сообщение от Djuice (Сообщение 982585)
copyPixels, но почему-то не видит альфа-канал и альфу перебрасывает в простой белый.

Может нужно указать правильный цвет заливки BitmapData? 0x00000000

wvxvw 22.03.2011 00:08

Правила про уважительное отношение читали? Оба?
А кода не хватает не только для того, чтобы делать предположения о его происхождении, но и о том, что происходит с битмапдатой / копированием. Так что, в любом случае, нужно видеть именно то место, которое либо не работает, либо работает медленно и т.п.

Djuice 22.03.2011 00:36

Цитата:

Сообщение от wvxvw (Сообщение 982607)
Правила про уважительное отношение читали? Оба?
А кода не хватает не только для того, чтобы делать предположения о его происхождении, но и о том, что происходит с битмапдатой / копированием. Так что, в любом случае, нужно видеть именно то место, которое либо не работает, либо работает медленно и т.п.

Сейчас:
Код AS3:

var _data_fon3:BitmapData = new BitmapData(Rozmirnist_game.x * Size_of_tile, Rozmirnist_game.y * Size_of_tile);
//Мувик
fon1 = new MovieClip();
fon1.graphics.beginFill(0x6F4F29, 1);
fon1.graphics.drawRect(0, 0, point.x, point.y);
fon1.graphics.endFill();
//Рандом
var temp_mc1:MovieClip;
var Rand_1:Number;
var Rand_3:Number;
var Rand_4:Number;
for (var i:int = 0; i < iteracii; i++)
{
        for (var j:int = 0; j < For_fon1.length; j++)
                {
                        temp_mc1 = new For_fon1[j]() as MovieClip;
                        Rand_1 = Math.random();
                        Rand_3 = Math.random();
                        Rand_4 = Math.random();
                        temp_mc1.scaleX = temp_mc1.scaleY = 0.8 + Rand_1;
                        temp_mc1.x = point.x * Rand_3;
                        temp_mc1.y = point.y * Rand_4;
                        fon1.addChild(temp_mc1);
                }
}
_data_fon3.draw(fon1);//битмапдата с мувика
fon_bitmap.bitmapData = _data_fon3;
fon1 = null;

А вот с копипиксел:
Код AS3:

_data_fon3 = new BitmapData(St.Rozmirnist_game.x * St.Size_of_tile, St.Rozmirnist_game.y * St.Size_of_tile , false, 0x6F4F29);
//Рандом
var temp_mc1:MovieClip;
var Rand_1:Number;
var Rand_3:Number;
var Rand_4:Number;
for (var i:int = 0; i < iteracii; i++)
{
        for (var j:int = 0; j < For_fon1.length; j++)
                {
                        temp_mc1 = new example() as MovieClip;
                        Rand_1 = Math.random();
                        Rand_3 = Math.random();//alfa
                        Rand_4 = Math.random();//X
                        temp_mc1.scaleX = temp_mc1.scaleY = 0.5 + Rand_1;
                        var data:BitmapData = new BitmapData(temp_mc1.width, temp_mc1.height);
                        data.draw(temp_mc1);
                        var pp:Point = new Point((int)(point.x * Rand_3), (int)(point.y * Rand_4));
                        _data_fon3.copyPixels(data, data.rect, pp,data,new Point(0,0),true);
                }
}
fon_bitmap.bitmapData = _data_fon3;

Первый случай - медленный слишком, Второй - не копирует альфу.

Добавлено через 12 минут
Код AS3:

var data:BitmapData = new BitmapData(temp_mc1.width, temp_mc1.height,true,0x00000000);

попробовал вот так. Теперь нормально, с альфой копирует, но по времени приблизительно также, как и мувиком. А вот теперь уж не знаю как сделать по-другому.


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

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