AS3 example: Bitmap zerschneiden
Mit Bildern kann man ja in Flash alles mögliche anstellen und Pixel für Pixel ändern. Hier ein kleines Beispiel wie man ein Bild mit AS3 beschneiden kann.
Das Beispiel macht eigentlich nicht anderes als die Bildinhalte des Quellbildes auf mehrere dynamisch generierten Bildern zu verteilen.

package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.geom.Point;
import flash.geom.Rectangle;
/**
* @author Dominic Beinenz
*/
[SWF(width='516', height='678', backgroundColor='#000000', frameRate='31')]
public class BitmapSplitter extends Sprite
{
[Embed(source="../graphics/image.png")]
private const image_png : Class;
//_____________________________________________________________________________________________________________
// C O N S T A N T
//=============================================================================================================
private const PARTS_NUMBER_HORIZONTAL : uint = 5;
private const PARTS_NUMBER_VERTICAL : uint = 8;
private const PARTS_PADDING : uint = 4;
//_____________________________________________________________________________________________________________
// V A R I A B L E S
//=============================================================================================================
private var _sourceBitmap : Bitmap;
//_____________________________________________________________________________________________________________
// I N I T I A L I Z E
//=============================================================================================================
public function BitmapSplitter()
{
init();
createPieces();
}
private function init() : void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.showDefaultContextMenu = false;
stage.stageFocusRect = false;
_sourceBitmap = new image_png();
}
//_____________________________________________________________________________________________________________
// P R I V A T E - F U N C T I O N S
//=============================================================================================================
private function createPieces() : void
{
var piecesNum : uint = PARTS_NUMBER_HORIZONTAL * PARTS_NUMBER_VERTICAL;
for (var i : int = 0;i < piecesNum; i++) {
var row : uint = Math.floor(i / PARTS_NUMBER_HORIZONTAL);
var column : uint = i % PARTS_NUMBER_HORIZONTAL;
createPieceBitmap(row, column);
}
}
private function createPieceBitmap(row : uint, column : uint) : void
{
var copyRectX : uint = getPositionPoint(row, column).x;
var copyRectY : uint = getPositionPoint(row, column).y;
var copyRectWidth : uint = getPositionPoint(row+1, column+1).x - copyRectX;
var copyRectHeight : uint = getPositionPoint(row+1, column+1).y - copyRectY;
var bitmap : Bitmap = new Bitmap(new BitmapData(copyRectWidth, copyRectHeight, false));
var rectangle : Rectangle = new Rectangle(copyRectX, copyRectY, copyRectWidth, copyRectHeight);
bitmap.bitmapData.copyPixels(_sourceBitmap.bitmapData, rectangle, new Point(0, 0));
bitmap.x = copyRectX + column * PARTS_PADDING;
bitmap.y = copyRectY + row * PARTS_PADDING;
addChild(bitmap);
}
private function getPositionPoint(row : uint, column : uint) : Point
{
var pointX:uint = Math.round(column / PARTS_NUMBER_HORIZONTAL * _sourceBitmap.width);
var pointY:uint = Math.round(row / PARTS_NUMBER_VERTICAL * _sourceBitmap.height);
return new Point(pointX, pointY);
}
//_____________________________________________________________________________________________________________
// P U B L I C - F U N C T I O N S
//=============================================================================================================
//_____________________________________________________________________________________________________________
// T W E E N I N G S
//=============================================================================================================
//_____________________________________________________________________________________________________________
// E V E N T S
//=============================================================================================================
//_____________________________________________________________________________________________________________
// G E T T E R & S E T T E R
//=============================================================================================================
}
}
Blog-Download (einzeln, “speichern unter…”):
Blog-Download (FDT-Projekt):
