|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
 Код AS3:
var map:BitmapData = new BitmapData(800, 800);
map.draw(new PuzzleMap()); // PuzzleMap — мувиклип, с заливками нескольких цветов. Аля карта с пазлами.
// инстанциируем исходное изображение. Какое-то изображение, кусок из которого будет вырезаться
image = new Art2(800, 800);
// цвет одной из заливок в PuzzleMap
var currentPuzzleColor:Number = 0xFF000000;
// границы этого цвета
var puzzleBounds:Rectangle = map.getColorBoundsRect(0xFFFFFFFF, currentPuzzleColor, true);
// создаем битмапдату по размерам цвета
var croppedImage:BitmapData = new BitmapData(puzzleBounds.width, puzzleBounds.height, true, 0xFFFFFFFF);
// копируем кусок исходного изображения в границах цвета
croppedImage.copyPixels(image, puzzleBounds, new Point(0, 0), image, new Point(0, 0), true);
// стираем все пиксели соответствующие пикселям map, которые не равны текущему цвету currentPuzzleColor
croppedImage.threshold(map, puzzleBounds,
new Point(0, 0), "!=", currentPuzzleColor, 0x00000000, 0xFFFFFFFF);
var puzzle:Puzzle = new Puzzle(croppedImage);
puzzle.x = 100;
puzzle.y = 100;
root.addChild(puzzle);
Код в классе Puzzle
 Код AS3:
public function Puzzle(bitmapData:BitmapData)
{
//TODO: implement function
super();
this.bitmapData = bitmapData;
init();
}
private var bitmap:Bitmap;
private var bitmapData:BitmapData;
private function init():void
{
//cacheAsBitmap = true
var bmd:BitmapData = bitmapData.clone();
//bmd.applyFilter(bmd, bitmapData.rect, new Point(0, 0), new BlurFilter(4, 4, 1));
//bmd.draw(bitmapData);
// bmd.applyFilter(bmd, bmd.rect, new Point(0, 0), new BevelFilter());
bitmap = new Bitmap(bmd, PixelSnapping.AUTO, true); // что с тру, что без тру один черт
bitmap.filters = [ new BevelFilter(4, 45, 0xFFFFFF, 1, 0x000000, 1, 4, 4, 1, 1, "inner", false ) ];
//bitmap.smoothing = true
addChild(bitmap);
}
upd:
Такой вариант придумал:
 Код AS3:
private function init():void
{
var bmd:BitmapData = bitmapData.clone();
var bounds:BitmapData = bitmapData.clone();
bounds.applyFilter(bounds, bitmapData.rect, new Point(0, 0), new BlurFilter());
bounds.applyFilter(bounds, bitmapData.rect, new Point(0, 0),
new BevelFilter(4, 45, 0xFFFFFF, 1, 0x000000, 1, 4, 4, 1, 1, "inner", true ));
bmd.draw(bounds);
bitmap = new Bitmap(bmd);
addChild(bitmap);
}
Но не покидает чувство, что через одно место это всё.
Последний раз редактировалось udaaff; 09.04.2010 в 00:58.
|