2013-12-15 1 views
0

Я очень новичок в Flex и Action Script 3. Я пытаюсь написать простую функцию, которая скопирует прямоугольную область из загруженного растрового изображения и создаст для спрайта спрайт. Я просто хочу научиться копировать часть изображения в другую.Создайте спрайт из растрового изображения в AS3

Функция:

public static function GenerateSprite(x:int,y:int,w:int,h:int) 
{ 
var bt:BitmapData = new BitmapData(w, h); 
var mtx:Matrix = new Matrix(); 
mtx.translate(-x, -y); 
bt.draw(bitmap, mtx, null, null, null, null); 
var s:Sprite = new Sprite(); 
s.graphics.beginBitmapFill(bt, null, false, false); 
s.graphics.endFill; 
return s; 
} 

х, у, ш и ч представляют х, у местоположения спрайта, его ширина и высота соответственно.

Любые советы приветствуются.

ваш искренне

PS: Я использую FlashDevelop для этого.

+0

's.graphics.endFill' является выражением типа функции, а не вызов функции :) вызвать брекеты использования после него. – Vesper

ответ

0

Здесь вы можете использовать copyPixels, и вам потребуется растровое изображение параметра для исходной растровой карты и возвращаемое значение функции Sprite.

Вот мое исправление для вас:

public static function GenerateSprite(bitmap:Bitmap,x:int,y:int,w:int,h:int):Sprite 
{ 
    var bt:BitmapData = new BitmapData(w, h); 
    bt.copyPixels(bitmap.bitmapData, new Rectangle(x,y,w,h), new Point(0,0)); 
    var s:Sprite = new Sprite(); 
    s.graphics.beginBitmapFill(bt, null, false, true); 
    s.graphics.drawRect(0, 0, w, h); 
    s.graphics.endFill(); 
    return s; 
} 
+0

Добавьте 's.graphics.lineStyle (0,0,0);' before 'drawRect', иначе черный контур испортит эффект. – Vesper