home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mobiclic 157
/
MOBICLIC157.ISO
/
pc
/
DATA
/
ANI157
/
ANI157_00
/
ANI157_00.swf
/
scripts
/
ani_00
/
PrintableSprite.as
< prev
Wrap
Text File
|
2013-09-17
|
6KB
|
140 lines
package ani_00
{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.printing.PrintJob;
import flash.printing.PrintJobOrientation;
public class PrintableSprite extends Sprite
{
private var pj:PrintJob;
private var bg:Sprite;
private var mcToPrint:MovieClip;
private var parentApp:DisplayObjectContainer;
public function PrintableSprite(mcToPrint:DisplayObject, parent:DisplayObjectContainer)
{
super();
if(mcToPrint is MovieClip)
{
this.mcToPrint = mcToPrint as MovieClip;
}
else
{
this.mcToPrint = new MovieClip();
this.mcToPrint.addChild(mcToPrint);
}
this.parentApp = parent;
this.init();
}
private function init() : void
{
}
public function print() : void
{
var pj:PrintJob = null;
var ratioX:Number = NaN;
var ratioY:Number = NaN;
var i:int = 0;
var gb:Rectangle = null;
trace("PJ",pj);
pj = new PrintJob();
var original:Object = {
"x":this.mcToPrint.x,
"y":this.mcToPrint.y,
"scaleX":this.mcToPrint.scaleX,
"scaleY":this.mcToPrint.scaleY,
"width":this.mcToPrint.width,
"height":this.mcToPrint.height,
"rotation":this.mcToPrint.rotation,
"parent":this.mcToPrint.parent,
"level":(this.mcToPrint.parent == null ? 0 : this.mcToPrint.parent.getChildIndex(this.mcToPrint))
};
var printStart:Boolean = pj.start();
var cadre:DisplayObject = !!this.mcToPrint.hasOwnProperty("CADRE") ? this.mcToPrint.CADRE : this.mcToPrint;
var numPages:int = 1;
var margeX:Number = (pj.paperWidth - pj.pageWidth) / 2;
var margeY:Number = (pj.paperHeight - pj.pageHeight) / 2;
var sprite_replace:Sprite = new Sprite();
if(printStart)
{
this.bg = new Sprite();
this.bg.graphics.beginFill(16777215);
this.bg.graphics.drawRect(0,0,100,100);
this.bg.graphics.endFill();
addChild(this.bg);
if(original.parent != null)
{
this.mcToPrint.parent.addChild(sprite_replace);
this.mcToPrint.parent.swapChildren(sprite_replace,this.mcToPrint);
}
addChild(this.mcToPrint);
this.parentApp.addChild(this);
for(i = 0; i < numPages; i++)
{
trace("mcToPrint.widthBeforeRotation",this.mcToPrint.x,this.mcToPrint.getBounds(this.mcToPrint).x,this.mcToPrint.getBounds(this.mcToPrint).y,this.mcToPrint.getBounds(this.mcToPrint).width,this.mcToPrint.getBounds(this.mcToPrint).height);
this.bg.width = pj.pageWidth;
this.bg.height = pj.pageHeight;
if(pj.orientation == PrintJobOrientation.PORTRAIT)
{
if(this.mcToPrint.width > this.mcToPrint.height)
{
this.mcToPrint.rotation = 90;
}
}
else if(this.mcToPrint.width < this.mcToPrint.height)
{
this.mcToPrint.rotation = 90;
}
trace("pj.pageWidth",pj.pageWidth);
trace("pj.pageHeight",pj.pageHeight);
trace("pj.paperWidth",pj.paperWidth);
trace("pj.paperHeight",pj.paperHeight);
trace("mcToPrint.width",this.mcToPrint.width,this.mcToPrint.getBounds(this.mcToPrint).x,this.mcToPrint.getBounds(this.mcToPrint).y,this.mcToPrint.getBounds(this.mcToPrint).width,this.mcToPrint.getBounds(this.mcToPrint).height);
trace("mcToPrint.height",this.mcToPrint.height);
gb = cadre.getBounds(this);
ratioX = pj.pageWidth / gb.width;
ratioY = pj.pageHeight / gb.height;
trace("ratioX",ratioX,"ratioY",ratioY);
gb = cadre.getBounds(this);
trace("bounds",gb.x,gb.y,gb.width,gb.height);
trace("pj.pageWidth",pj.pageWidth);
trace("pj.pageHeight",pj.pageHeight);
trace("mcToPrint.width",this.mcToPrint.width);
trace("mcToPrint.height",this.mcToPrint.height);
margeX = (this.bg.width - gb.width) / 2;
margeY = (this.bg.height - gb.height) / 2;
this.mcToPrint.x = this.mcToPrint.x - gb.x + margeX;
this.mcToPrint.y = this.mcToPrint.y - gb.y + margeY;
trace("margeX",margeX);
trace("margeY",margeY);
pj.addPage(this,new Rectangle(0,0,this.bg.width,this.bg.height));
}
pj.send();
this.mcToPrint.x = original.x;
this.mcToPrint.y = original.y;
this.mcToPrint.scaleX = original.scaleX;
this.mcToPrint.scaleY = original.scaleY;
this.mcToPrint.rotation = original.rotation;
if(original.parent != null)
{
original.parent.addChild(this.mcToPrint);
original.parent.swapChildren(this.mcToPrint,sprite_replace);
original.parent.removeChild(sprite_replace);
}
this.parentApp.removeChild(this);
}
}
}
}