AS3 using PrintJob to print a MovieClip

前端 未结 3 1141
盖世英雄少女心
盖世英雄少女心 2020-12-30 15:40

I am currently trying to create a function which will allow me to pass in a MovieClip and print it.

Here is the simplified version of the function:

3条回答
  •  天涯浪人
    2020-12-30 16:12

    I forgot to scale the print area to match the movie clip being resized. See below for working solution:

    function printMovieClip(clip:MovieClip) {
    
        var printJob:PrintJob = new PrintJob();
        var numPages:int = 0;
        var printArea:Rectangle;
        var printHeight:Number;
        var printY:int = 0;
    
        if ( printJob.start() ) {
    
            /* Resize movie clip to fit within page width */
            if (clip.width > printJob.pageWidth) {
                clip.width = printJob.pageWidth;
                clip.scaleY = clip.scaleX;
            }
    
            /* Store reference to print area in a new variable! Will save on scaling calculations later... */
            printArea = new Rectangle(0, 0, printJob.pageWidth/clip.scaleX, printJob.pageHeight/clip.scaleY);
    
            numPages = Math.ceil(clip.height / printJob.pageHeight);
    
            /* Add pages to print job */
            for (var i:int = 0; i < numPages; i++) {
                printJob.addPage(clip, printArea);
                printArea.y += printArea.height;
            }
    
            /* Send print job to printer */
            printJob.send();
    
            /* Delete job from memory */
            printJob = null;
    
        }
    
    }
    
    printMovieClip( testMC );
    

提交回复
热议问题