views:

161

answers:

1

Hey all!

ok back at another issues in as3 printing

//Function to print entire screen
function printFunction(event:MouseEvent):void
{
    var myPrintJob:PrintJob = new PrintJob();
    var oldScaleX:Number = root.scaleX;
    var oldScaleY:Number = root.scaleY;

    //Start the print job
    myPrintJob.start();

    //Figure out the new scale
    var newScaleX:Number = myPrintJob.paperWidth/root.width;
    var newScaleY:Number = myPrintJob.paperHeight/root.height;

    //Shrink in both the X and Y directions by the same amount (keep the same ratio)
    if(newScaleX < newScaleY)
        newScaleY = newScaleX;
    else
        newScaleX = newScaleY;

    root.scaleX = newScaleX;
    root.scaleY = newScaleY;

    //Print the page
    myPrintJob.addPage(Sprite(root));
    myPrintJob.send();

    //Reset the scale to the old values
    root.scaleX = oldScaleX;
    root.scaleY = oldScaleY;
}

I cant seem to find anything thats really helpful with this. When i click cancel on the print dialog box, i get error below and it blanks out my swf.

The error consists, that whenever i try to print and cancel it, or even when i do succesfully print, swf goes blank.

A: 

There are two printing types, vector and bitmap. Because you are just passing in the root it will try to print everything as a vector. But what you might be seeing is that in some versions of the Flash player on some operating systems vector printing doesn't work. I normally create a bitmap snapshot of the displayobject that you want and print this.

var bitmapData:BitmapData = new BitmapData(root.width, root.height); bitmapData.draw(root); var printThis:Bitmap = new Bitmap(bitmapData);

Make sure you add it to the stage before you print so that preview works and mind the max bitmap data size. When you are finished delete the bitmap.

Tyler Larson
but how do you print a bitmap without creating a Sprite? seems that's my problem?
Carlos Barbosa
It looks like you have to use a Sprite to print a bitmap. http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/printing/PrintJob.html#addPage%28%29
letseatfood