
Код Main.as:

Код AS3:
package {
import com.mikroacse.display.utils.*;
import com.mikroacse.display.utils.log.*;
import com.mikroacse.motion.*;
import com.mikroacse.motion.easing.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.filters.*;
import flash.system.System;
/**
* ...
* @author MikroAcse studio
*/
public class Main extends Sprite {
public var obj1:DisplayObject;
public var obj2:DisplayObject;
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
this.loaderInfo.addEventListener(Event.COMPLETE, start);
}
private function start(e:Event):void {
obj2 = addChild(DrawTool.newCircle([200, 200, 50], [0x0000FF]));
obj1 = addChild(DrawTool.newBox([-25, -25, 50, 50], [0xFF0000]));
obj1.scaleX = 0.5;
obj2.scaleY = 2;
obj1.rotation = 10;
obj1.x = obj1.y = 100;
DisplayTool.toBitmapData(obj1);
}
}
}
Код DisplayTool.as:

Код AS3:
package com.mikroacse.display.utils {
import com.mikroacse.utils.*;
import flash.display.*;
import flash.geom.*;
public static function toBitmapData(target:DisplayObject):BitmapData {
var rect:Rectangle = toRect(target);
var bmd:BitmapData = new BitmapData(rect.width, rect.height, true, 0);
var mtrx:Matrix = new Matrix(target.scaleX, 0, 0, target.scaleY, target.x, target.y);
mtrx.translate( -rect.left, -rect.top);
mtrx.rotate(target.rotation * Math.PI/180);
bmd.draw(target, mtrx);
target.root.stage.addChild(new Bitmap(bmd));
return bmd;
}
public static function toRect(target:DisplayObject):Rectangle {
var main:Stage=target.root.stage;
var rect:Rectangle=target.getBounds(main);
return rect;
}
public static function addChilds(container:DisplayObjectContainer, ...childs):void {
for (var i:uint = 0; i < childs.length; i++) {
container.addChild(childs[i] as DisplayObject);
}
}
}
}