2016-04-06 73 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