Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Заливка паттерном. (http://www.flasher.ru/forum/showthread.php?t=114714)

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();

;


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

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