我只是想知道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();
}
答案 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);