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   
Text File  |  2013-09-17  |  6KB  |  140 lines

  1. package ani_00
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.display.DisplayObjectContainer;
  5.    import flash.display.MovieClip;
  6.    import flash.display.Sprite;
  7.    import flash.geom.Rectangle;
  8.    import flash.printing.PrintJob;
  9.    import flash.printing.PrintJobOrientation;
  10.    
  11.    public class PrintableSprite extends Sprite
  12.    {
  13.        
  14.       
  15.       private var pj:PrintJob;
  16.       
  17.       private var bg:Sprite;
  18.       
  19.       private var mcToPrint:MovieClip;
  20.       
  21.       private var parentApp:DisplayObjectContainer;
  22.       
  23.       public function PrintableSprite(mcToPrint:DisplayObject, parent:DisplayObjectContainer)
  24.       {
  25.          super();
  26.          if(mcToPrint is MovieClip)
  27.          {
  28.             this.mcToPrint = mcToPrint as MovieClip;
  29.          }
  30.          else
  31.          {
  32.             this.mcToPrint = new MovieClip();
  33.             this.mcToPrint.addChild(mcToPrint);
  34.          }
  35.          this.parentApp = parent;
  36.          this.init();
  37.       }
  38.       
  39.       private function init() : void
  40.       {
  41.       }
  42.       
  43.       public function print() : void
  44.       {
  45.          var pj:PrintJob = null;
  46.          var ratioX:Number = NaN;
  47.          var ratioY:Number = NaN;
  48.          var i:int = 0;
  49.          var gb:Rectangle = null;
  50.          trace("PJ",pj);
  51.          pj = new PrintJob();
  52.          var original:Object = {
  53.             "x":this.mcToPrint.x,
  54.             "y":this.mcToPrint.y,
  55.             "scaleX":this.mcToPrint.scaleX,
  56.             "scaleY":this.mcToPrint.scaleY,
  57.             "width":this.mcToPrint.width,
  58.             "height":this.mcToPrint.height,
  59.             "rotation":this.mcToPrint.rotation,
  60.             "parent":this.mcToPrint.parent,
  61.             "level":(this.mcToPrint.parent == null ? 0 : this.mcToPrint.parent.getChildIndex(this.mcToPrint))
  62.          };
  63.          var printStart:Boolean = pj.start();
  64.          var cadre:DisplayObject = !!this.mcToPrint.hasOwnProperty("CADRE") ? this.mcToPrint.CADRE : this.mcToPrint;
  65.          var numPages:int = 1;
  66.          var margeX:Number = (pj.paperWidth - pj.pageWidth) / 2;
  67.          var margeY:Number = (pj.paperHeight - pj.pageHeight) / 2;
  68.          var sprite_replace:Sprite = new Sprite();
  69.          if(printStart)
  70.          {
  71.             this.bg = new Sprite();
  72.             this.bg.graphics.beginFill(16777215);
  73.             this.bg.graphics.drawRect(0,0,100,100);
  74.             this.bg.graphics.endFill();
  75.             addChild(this.bg);
  76.             if(original.parent != null)
  77.             {
  78.                this.mcToPrint.parent.addChild(sprite_replace);
  79.                this.mcToPrint.parent.swapChildren(sprite_replace,this.mcToPrint);
  80.             }
  81.             addChild(this.mcToPrint);
  82.             this.parentApp.addChild(this);
  83.             for(i = 0; i < numPages; i++)
  84.             {
  85.                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);
  86.                this.bg.width = pj.pageWidth;
  87.                this.bg.height = pj.pageHeight;
  88.                if(pj.orientation == PrintJobOrientation.PORTRAIT)
  89.                {
  90.                   if(this.mcToPrint.width > this.mcToPrint.height)
  91.                   {
  92.                      this.mcToPrint.rotation = 90;
  93.                   }
  94.                }
  95.                else if(this.mcToPrint.width < this.mcToPrint.height)
  96.                {
  97.                   this.mcToPrint.rotation = 90;
  98.                }
  99.                trace("pj.pageWidth",pj.pageWidth);
  100.                trace("pj.pageHeight",pj.pageHeight);
  101.                trace("pj.paperWidth",pj.paperWidth);
  102.                trace("pj.paperHeight",pj.paperHeight);
  103.                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);
  104.                trace("mcToPrint.height",this.mcToPrint.height);
  105.                gb = cadre.getBounds(this);
  106.                ratioX = pj.pageWidth / gb.width;
  107.                ratioY = pj.pageHeight / gb.height;
  108.                trace("ratioX",ratioX,"ratioY",ratioY);
  109.                gb = cadre.getBounds(this);
  110.                trace("bounds",gb.x,gb.y,gb.width,gb.height);
  111.                trace("pj.pageWidth",pj.pageWidth);
  112.                trace("pj.pageHeight",pj.pageHeight);
  113.                trace("mcToPrint.width",this.mcToPrint.width);
  114.                trace("mcToPrint.height",this.mcToPrint.height);
  115.                margeX = (this.bg.width - gb.width) / 2;
  116.                margeY = (this.bg.height - gb.height) / 2;
  117.                this.mcToPrint.x = this.mcToPrint.x - gb.x + margeX;
  118.                this.mcToPrint.y = this.mcToPrint.y - gb.y + margeY;
  119.                trace("margeX",margeX);
  120.                trace("margeY",margeY);
  121.                pj.addPage(this,new Rectangle(0,0,this.bg.width,this.bg.height));
  122.             }
  123.             pj.send();
  124.             this.mcToPrint.x = original.x;
  125.             this.mcToPrint.y = original.y;
  126.             this.mcToPrint.scaleX = original.scaleX;
  127.             this.mcToPrint.scaleY = original.scaleY;
  128.             this.mcToPrint.rotation = original.rotation;
  129.             if(original.parent != null)
  130.             {
  131.                original.parent.addChild(this.mcToPrint);
  132.                original.parent.swapChildren(this.mcToPrint,sprite_replace);
  133.                original.parent.removeChild(sprite_replace);
  134.             }
  135.             this.parentApp.removeChild(this);
  136.          }
  137.       }
  138.    }
  139. }
  140.