AS3 Flash printJob 打印空白页

AS3 Flash printJob print blank page

我只想知道 flash web 中 action script 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();
}

这太容易被发现了:

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);