Nearly identical - you'd have to change _width to width, use the .graphics
of a MC, etc.

On Sat, Oct 25, 2008 at 6:22 AM, Cor <[EMAIL PROTECTED]> wrote:

> And how does this look in AS3??
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Glen Pike
> Sent: zaterdag 25 oktober 2008 0:30
> To: Flash Coders List
> Subject: Re: [Flashcoders] Printing filters from the Flash Player
>
> Hi,
>
>    Here is some AS2 code that I wrote to do this - the _toPrint is a
> MovieClip containing lots of stuff with filters on.  There is scaling
> too - depending on whether the user has chosen portrait or landscape -
> for later AS3 code, I worked out the orientation and rotated the printed
> image - not bitmapped though...
> The whole lot is rendered to a Bitmap, then printed.
>
>    Hope this helps.  I may even get round to blogging it one day :)
>
>    Glen
>
>    private function _print():Void {
>        //start a print job with the _toPrint...
>
>        // create PrintJob object
>        var my_pj:PrintJob = new PrintJob();
>
>        // display print dialog box, but only initiate the print job
>        // if start returns successfully.
>        if (my_pj.start()) {
>             // use a variable to track successful calls to addPage
>            var pagesToPrint:Number = 0;
>
>            //we need to scale the object too!
>
>            var h:Number = my_pj.pageHeight;
>            var w:Number = my_pj.pageWidth;
>
>            var xs = w / _toPrint._width;
>            var ys = h / _toPrint._height;
>            trace("page dimensions " + w + ", " + h + " scale " + xs +
> ", " + ys + " to print " + _toPrint._xscale + ", " + _toPrint._yscale );
>
>            var _printWidth:Number;
>            var _printHeight:Number;
>            var scale:Number = (xs < ys) ? xs : ys;
>            if (xs < ys) {
>                _printWidth = Math.floor(xs * _toPrint._width);
>                _printHeight = Math.floor(xs * _toPrint._height);
>            } else {
>                _printWidth = Math.floor(ys * _toPrint._width);
>                _printHeight = Math.floor(ys * _toPrint._height);
>            }
>            trace("to print " + _toPrint._xscale + ", " +
> _toPrint._yscale + " = " + _toPrint._width + ", " + _toPrint._height);
>
>            // add specified area to print job
>            //now do our bitmap thingy..
>            var printedImg:MovieClip =
> this.createEmptyMovieClip("printedImg", this.getNextHighestDepth());
>            printedImg.beginFill(0xffffff, 1);
>            printedImg.moveTo(0, 0);
>            printedImg.lineTo(my_pj.pageWidth, 0);
>            printedImg.lineTo(my_pj.pageWidth, my_pj.pageHeight);
>            printedImg.lineTo(0, my_pj.pageHeight);
>            printedImg.lineTo(0, 0);
>            printedImg.endFill();
>            var printBmp:BitmapData = new BitmapData(my_pj.pageWidth,
> my_pj.pageHeight, false, 0xffffff);
>            printedImg.attachBitmap(printBmp, 1);
>            var mtx:Matrix =  new Matrix();
>            mtx.scale(scale, scale);
>            printBmp.draw(_toPrint, mtx);
>
>            // repeat once for each page to be printed
>            if (my_pj.addPage(printedImg, null, {printAsBitmap:true})) {
>                pagesToPrint++;
>            }
>            _toPrint._xscale = _toPrint._yscale = 100;
>
>            if (pagesToPrint > 0) {
>                my_pj.send();  // print page(s)
>            }
>            printBmp.dispose();
>            delete printBmp;
>            printedImg.unloadMovie();
>
>        }
>
>    }
>
> Gert-Jan van der Wel wrote:
> > Hi Jim,
> >
> > Yeah we tried the printAsBitmap option, but it didn't make much of a
> > difference. We're now looking at creating a BitmapData and printing
> > that. Maybe that works.
> >
> > Gert-Jan
> >
> >
> > Op 24 okt 2008, om 15:17 heeft Jim McIntyre het volgende geschreven:
> >
> >> Gert-Jan van der Wel wrote:
> >>> Hi there,
> >>> We use filters (shadows and glows) to make the scene look better. At
> >>> some point a user can print what they've created, but the print
> >>> shows no filters. Is there an easy way to get the filters on the print?
> >>
> >> Have you tried printAsBitmap? I found that was the only way to get
> >> some stuff to print the same way it was displayed, even when filters
> >> weren't involved (like some hand-drawn shadows using transparent fills).
> >>
> >> My project was written in AS2; I don't know whether the implications
> >> are different for code running in AVM2.
> >>
> >> (code simplified from my app, untested)
> >>
> >> --
> >>
> >> private function printPoster():Void {
> >>  var posterPrintJob:PrintJob = new PrintJob();
> >>  if (posterPrintJob.start()) {
> >>    var pgsQueued:Number = 0;
> >>    this.printPg._visible = true; //printPg is the MovieClip to print
> >>    var printArea:Object = {xMin:0, xMax:printPg._width, yMin:0,
> >> yMax:printPg._height};
> >>    var printOptions:Object = {printAsBitmap:true};
> >>    if (posterPrintJob.addPage('printPg', printArea, printOptions)) {
> >>      pgsQueued++;
> >>    }
> >>    if (pgsQueued) {
> >>      posterPrintJob.send();
> >>    }
> >>  }
> >> }
> >>
> >> --
> >> _______________________________________________
> >> Flashcoders mailing list
> >> [email protected]
> >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> > _______________________________________________
> > Flashcoders mailing list
> > [email protected]
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> >
>
> --
>
> Glen Pike
> 01326 218440
> www.glenpike.co.uk <http://www.glenpike.co.uk>
>
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to