PDA

Просмотр полной версии : Заливка паттерном.


tikhop
06.08.2008, 20:02
Хотелось бы залить весь экран кусочком битмапа, делаю следующее

import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

Stage.align="tl";


//Создаем бэкгроунд
var backGroundWidth:Number=Math.ceil(2840/bg._width)*bg._width;
var backGroundHeight:Number=Math.ceil(2830/bg._height)*bg._height;
var backGround:BitmapData=new BitmapData(backGroundWidth, backGroundHeight, false, 0xFFFFFF);

//Копируем мувиклип в BitmapData
var bdWidth:Number=bg._width;
var bdHeight:Number=bg._height;
var tempBitmapData:BitmapData=new BitmapData(bdWidth, bdHeight, false, 0xFF00FF);
tempBitmapData.draw(bg);

//Вставляем копию мувиклипа в бэкграунд
function generateBackGround():Void
{
var amountCopy:Number=Math.ceil(2840/bg._width)*Math.ceil(2830/bg._height); //количество копий

var startX:Number=0;
var startY:Number=0;

for(var i:Number=0; i<amountCopy; i++)
{
backGround.copyPixels(tempBitmapData, new Rectangle(0, 0, 87, 81), new Point(startX, startY));
startX+=bdWidth;
if(startX>2840)
{
startY+=bdHeight;
startX=0;
}
}

tempBitmapData.dispose();
this.attachBitmap(backGround, 0);
}
generateBackGround();


Все работает, вроде не жалуюсь.... НО хочется знать, можжет есть способ лучше, правильнее или более шустрый (на пару мс)

Wolsh
06.08.2008, 20:41
С помощью битмапфилла))
import flash.display.BitmapData;
//
Stage.scaleMode = "noScale";
Stage.align = "TL";
Stage.addListener(this);
this.onResize = function () {
// здесь аттачится картинка из библиотеки - можно по-другому
var myBitmapData:BitmapData = BitmapData.loadBitmap("libBitmap");
this.createEmptyMovieClip("bmp_fill_mc", 1);
with (bmp_fill_mc) {
beginBitmapFill(myBitmapData, true, true);
moveTo(0, 0);
lineTo(0, Stage.height);
lineTo(Stage.width, Stage.height);
lineTo(Stage.width, 0);
lineTo(0, 0);
endFill();
}
};
this.onResize();;