2016-04-06 72 views
-1

我只想知道在flash网页中使用动作脚本3打印问题。AS3 Flash printJob打印空白页

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

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

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

回答

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

这就是工作:)非常感谢你 – Richard