2016-04-06 13 views
-1

私はちょうどフラッシュウェブでのアクションスクリプト3の印刷の問題を知りたいです。AS3 Flash printJob空白ページを印刷

私は2つのムービークリップを持っています。そのうちの1つはビットマップイメージを持ち、もう1つは目的のサイズの用紙に使用されています。

私はこの作品を印刷しようとしていますが、私は常に白紙を持っています。 私のコードで何が間違っていますか?

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は、任意の1つの点で1つの表示リストにしか属しません。重要なものに最後の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

これはgreateジョブです。ありがとう – Richard

関連する問題