AS3 Flash printJob打印空白页

时间:2016-04-06 15:20:24

标签: actionscript-3 flash printing

我只是想知道flash网络中动作脚本3的打印问题。

我有两个影片剪辑,其中一个有位图图像,另一个用于纸张大小。

我尝试打印这项工作,但我总是有空白纸。 我的代码有什么问题?

var printJob:PrintJob = new PrintJob();

//stage.stageWidth = 2481;
//stage.stageHeight = 3508;

mc.width = 980; // mc is a paper
mc.height = 700;

mc.x = mc.y = 0;

mc.addChild(content_mc);
content_mc.x = 10; // content_mc is a movie clip has a bitmap
content_mc.y = 10;

addChild(content_mc);

if (printJob.start()) {

    if (mc.width>printJob.pageWidth) {
        mc.width=printJob.pageWidth;
        mc.scaleY=mc.scaleX;
    }

    var rect1:Rectangle = new Rectangle(0, 0, 980, 700); 

    printJob.addPage(mc,rect1);
    printJob.send();
}

1 个答案:

答案 0 :(得分:2)

这很容易发现:

mc.addChild(content_mc);
addChild(content_mc);

也许你是故意这样做的,认为你可以同时在不同的地方添加一个DisplayObject。不,你不能,DisplayObject只能属于任何一个点的一个显示列表。您可以将它添加到任意数量的显示列表中,最后一个addChild将是重要的。在这种情况下,您可以将内容添加到mc,然后通过将其添加到另一个显示列表中立即将其删除。

你需要的是将它添加到mc,然后打印,然后将其添加回原来的位置。你做的是将它添加到mc,将它添加到它应该的位置,然后打印,当然它是空白的。

mc.addChild(content_mc);
content_mc.x = 10; 
content_mc.y = 10;
if (printJob.start()) 
{
     if (mc.width>printJob.pageWidth)
     {
         mc.width=printJob.pageWidth;
         mc.scaleY=mc.scaleX;
     }
     var rect1:Rectangle = new Rectangle(0, 0, 980, 700); 
     printJob.addPage(mc,rect1);
     printJob.send();
} 
addChild(content_mc);