1

我无法打印舞台:

btn.addEventListener(MouseEvent.CLICK, printFunction);

function printFunction(event:MouseEvent):void
{
    var myPrintJob:PrintJob = new PrintJob();
    myPrintJob.addPage(0);
    myPrintJob.send();

}

它给了我一个编译错误:

1118:将具有静态类型 flash.display:DisplayObject 的值隐式强制转换为可能不相关的类型 flash.display:Sprite。

我也试过:

myPrintJob.addPage(Sprite(0));

没有编译错误;但是当我单击打印按钮时,没有打印对话框,并且 Flash 中的输出部分给了我这个错误:

TypeError:错误 #1034:类型强制失败:无法将 0 转换为 flash.display.Sprite。在 Untitled_fla::MainTimeline/printFunction()

4

1 回答 1

3

Printjob 的 addPage 方法需要 Sprite 作为第一个参数。

你想通过传递 0 来实现什么?

如果您想要空白页,请尝试:

var myPrintJob:PrintJob = new PrintJob();
myPrintJob.start(); /*Initiates the printing process for the operating system, calling the print dialog box for the user, and populates the read-only properties of the print job.*/
myPrintJob.addPage( new Sprite() );
myPrintJob.send();

另一个带有红色方块的例子:

var s:Sprite = new Sprite();
s.graphics.beginFill(0xFF0000);
s.graphics.drawRect(0, 0, 80, 80);
s.graphics.endFill();

var myPrintJob:PrintJob = new PrintJob();
myPrintJob.start(); /*Initiates the printing process for the operating system, calling the print dialog box for the user, and populates the read-only properties of the print job.*/
myPrintJob.addPage( s );
myPrintJob.send();

更多信息在这里

要打印舞台的一部分,您可以:

1) 将要打印的所有内容包装在一个 sprite 中,并将该 sprite 传递给 addPage()。

或者

2) 使用位图数据

 var bd :BitmapData = new BitmapData(stage.width, stage.height, false);
 bd.draw(stage);
 var b:Bitmap = new Bitmap (bd);
 var s:Sprite = new Sprite();
 s.addChild(b);

 var printArea = new Rectangle( 0, 0, 200, 200 ); // The area you want to crop

 myPrintJob.addPage( s, printArea );
于 2013-06-23T17:12:10.403 回答