Actionscript 3 如何使用as3打印大尺寸sprite

Actionscript 3 如何使用as3打印大尺寸sprite,actionscript-3,printing,Actionscript 3,Printing,我有一个应用程序,用户首先插入一些数据,然后以对齐的表格形式打印数据。但是,当我使用自定义类FilePrinter打印最终文档时,我遇到了一个问题,该类FilePrinter只接受一个非可选参数“Sprite”。我清楚而正确地遵循代码,但当我打印时,打印的文档只不过是一个清晰的页面。我不明白为什么会这样? 但需要注意的是,sprite由图像组成(分辨率不正常),打印文档的大小在准备打印时会变大(大约12mb到15mb)。 如果有人知道这个问题,请帮助我。。。 谢谢 var rslt:MovieC

我有一个应用程序,用户首先插入一些数据,然后以对齐的表格形式打印数据。但是,当我使用自定义类FilePrinter打印最终文档时,我遇到了一个问题,该类FilePrinter只接受一个非可选参数“Sprite”。我清楚而正确地遵循代码,但当我打印时,打印的文档只不过是一个清晰的页面。我不明白为什么会这样? 但需要注意的是,sprite由图像组成(分辨率不正常),打印文档的大小在准备打印时会变大(大约12mb到15mb)。 如果有人知道这个问题,请帮助我。。。 谢谢

var rslt:MovieClip = new MAIN_DOC();

rslt.box1.text = arr[0].toString();
rslt.box2.text = arr[1].toString();
rslt.box3.text = arr[2].toString();
rslt.box4.text = arr[3].toString();
rslt.box5.text = arr[4].toString();
rslt.box6.text = arr[5].toString();

var BackM:MovieClip = new BackGround();

BackM.PIcont.addChild(picData);

var sprite:Sprite = new Sprite();
sprite.addChild(BackM);
sprite.addChild(rslt);

var print:FilePrinter = new FilePrinter(sprite);
function printBtnClick(e:MouseEvent):void
{
   print.print();
}
文件打印机类

public class FilePrinter { 
    private var pJob:PrintJob;
    private var opt:PrintJobOptions = new PrintJobOptions(true); 
    private var sp:Sprite; 
    public function FilePrinter(sprite:Sprite) { 
        sp = new Sprite(); 
        sp = sprite; 
        pJob = new PrintJob(); 
        if (pJob.start()) 
        { 
            pJob.addPage(sp, null, opt); 
        } 
    } 
    public function startPrint():void { 
        pJob.send(); 
    } 
}
从:

此外,15秒脚本超时限制适用于以下时间间隔:

  • PrintJob.start()和第一个PrintJob.addPage()

  • PrintJob.addPage()和下一个PrintJob.addPage()

  • 最后一个PrintJob.addPage()和PrintJob.send()

如果上述任何时间间隔超过15秒,则PrintJob实例上对PrintJob.start()的下一次调用将返回false,PrintJob实例上的下一次PrintJob.addPage()将导致Flash Player或Adobe AIR引发运行时异常

我建议在button press事件触发之前不要初始化
FilePrinter
类,而且您似乎正在button click listener中调用
print()
,但是
FilePrinter
类中没有此类函数,只有
startPrint()


FilePrinter
来自哪里?我似乎在任何地方都找不到它的文档,包括这个类的代码,以及你从哪里获取的示例,这将帮助我们识别问题,我没有从任何地方获取“FilePrinter”。这不是什么,只是自制的定制类。当我不使用这个类,而是使用简单的AS3代码来打印时,这个问题仍然存在。我正在共享class
FilePrinter
code
package{导入flash.display.BitmapData;导入flash.printing.PrintJob;导入flash.display.Sprite;导入flash.printing.PrintJobOptions;导入flash.display.Bitmap;公共类文件打印机{私有变量pJob:PrintJob私有变量opt:PrintJobOptions=new PrintJobOptions(true);私有变量sp:Sprite;公共函数文件打印机(sprite:sprite){sp=new sprite();sp=sprite;pJob=new PrintJob();if(pJob.start()){pJob.addPage(sp,null,opt);}}}}公共函数startPrint():void{pJob.send();}}
FilePrinter
类什么都不是。你应该假设这个类从来没有被使用过,因为3个代码一直用于打印最终文档。这没关系。我错误地写下了
print()
,在我的真实文档中,我调用了
startPrint
函数。我看到,超过15秒的限制在这种情况下不需要应用。因为15秒的时间比flash播放器实际花费的时间越来越长。flash播放器在启动打印对话框时最多只需要3到5秒。如果
FilePrinter
类在按钮按下事件触发后初始化。这实际上是我不理解的问题,为什么打印的页面只是一个清晰的页面。
var print:FilePrinter;
function printBtnClick(e:MouseEvent):void
{
    print = new FilePrinter(sprite);
    print.startPrint();
}