Показать сообщение отдельно
Старый 08.04.2010, 00:17
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Попробуйте такой способ. Проще ничего не придумал.
Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
 
// вырезка одного пазла.
 
// исходное изображение
var image:BitmapData = BitmapData.loadBitmap("image");
 
// карта пазлов, каждый из которых имеет уникальный цвет
var map:BitmapData = BitmapData.loadBitmap("map");
 
// текущий цвет пазла в карте
var currentPuzzleColor:Number = 0xFFFF6633;
 
// определяем границы текущего цвета
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));
 
// устанавливаем всем пикселям не равным текущему цвету — 0x00000000
croppedImage.threshold(map, puzzleBounds, 
		new Point(0, 0), "!=", currentPuzzleColor, 0x00000000, 0xFFFFFFFF);
 
var imageContainer:MovieClip = createEmptyMovieClip("imageContainer", 0);
imageContainer.attachBitmap(croppedImage, 0);