我目前正在尝试创建一个函数,该函数将允许我传递MovieClip
并进行打印。
这是该函数的简化版本:
function printMovieClip(clip:MovieClip) {
var printJob:PrintJob = new PrintJob();
var numPages:int = 0;
var printY:int = 0;
var printHeight:Number;
if ( printJob.start() ) {
/* Resize movie clip to fit within page width */
if (clip.width > printJob.pageWidth) {
clip.width = printJob.pageWidth;
clip.scaleY = clip.scaleX;
}
numPages = Math.ceil(clip.height / printJob.pageHeight);
/* Add pages to print job */
for (var i:int = 0; i < numPages; i++) {
printJob.addPage(clip, new Rectangle(0, printY, printJob.pageWidth, printJob.pageHeight));
printY += printJob.pageHeight;
}
/* Send print job to printer */
printJob.send();
/* Delete job from memory */
printJob = null;
}
}
printMovieClip( testMC );
不幸的是,这无法按预期方式工作,即打印
MovieClip
的整个宽度并在长度上进行分页符。
最佳答案
我忘了缩放打印区域以匹配要调整大小的影片剪辑。请参阅以下工作解决方案:
function printMovieClip(clip:MovieClip) {
var printJob:PrintJob = new PrintJob();
var numPages:int = 0;
var printArea:Rectangle;
var printHeight:Number;
var printY:int = 0;
if ( printJob.start() ) {
/* Resize movie clip to fit within page width */
if (clip.width > printJob.pageWidth) {
clip.width = printJob.pageWidth;
clip.scaleY = clip.scaleX;
}
/* Store reference to print area in a new variable! Will save on scaling calculations later... */
printArea = new Rectangle(0, 0, printJob.pageWidth/clip.scaleX, printJob.pageHeight/clip.scaleY);
numPages = Math.ceil(clip.height / printJob.pageHeight);
/* Add pages to print job */
for (var i:int = 0; i < numPages; i++) {
printJob.addPage(clip, printArea);
printArea.y += printArea.height;
}
/* Send print job to printer */
printJob.send();
/* Delete job from memory */
printJob = null;
}
}
printMovieClip( testMC );
关于flash - AS3使用“打印作业”来打印影片剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1422259/