在AS3中打印Movieclip(Flash CS3)

时间:2011-06-01 15:12:37

标签: flash actionscript-3 printing movieclip

我知道在这个论坛上有类似的问题,但我已经尝试了发布的想法但它们没有用。

基本上我们正在尝试打印包含用户绘制的图形的动画片段。我们有一个用作画布的矩形,一些绘图可能在画布之外。我们要做的是打印画布中的内容,它不是从(0,0)开始。在打印之前还需要调整画布大小以适合纸张。

我们想知道是否有人有解决方案吗?我们已经尝试了很多不同的东西,但事情总是被切断或者尺寸错误,甚至是不正确地拉伸。

这是我们超级凌乱的代码!

    function startPrint(evnt: Event) {
printJob = new PrintJob();
var xNumber:Number = allGraphic.x; //saving the original x-value of the movieclip
var yNumber:Number = allGraphic.y; //saving y
var wNumber:Number = allGraphic.width; //saving width
var hNumber:Number = allGraphic.height; //saving height
var rect:Rectangle = new Rectangle (0,0,0,0); //printArea

var sucess = printJob.start();

if (sucess) {
if (printJob.orientation == PrintJobOrientation.LANDSCAPE) {
//allGraphic.rotation = 90;
rect.x = 115;
rect.y = 107;
rect.width = 792;
rect.height = 576;
allGraphic.width = 792;
allGraphic.height = 576;
} //end if (landscape)
             else {
rect.x = 110; //x coor of the printArea rectangle
rect.y = 85; //y coor
rect.width = 875; //width of printArea
rect.height = 475; // height of printArea
allGraphic.width = allGraphic.width *(576/wNumber); //scale the movieclip width (with the drawing)
allGraphic.height = allGraphic.height * (396/hNumber); // height scaling    
}//end else

printJob.addPage (allGraphic, rect);
}//end

 if success

//reset allGraphic back to original size
allGraphic.x = xNumber;
allGraphic.y = yNumber;
allGraphic.width = wNumber;
allGraphic.height = hNumber;
}

1 个答案:

答案 0 :(得分:1)

问题在于使用allGraphic.width。这是绘图区域的完整宽度,包括负片和正片重叠。您还应该使用scaleXscaleY而不是为缩放设置宽度和高度(返回只是调用scaleX = scaleY = 1)。

我建议使用画布的固定尺寸,用户可以在其中绘制比例计算。您还可以应用具有画布大小的mask来“剪切”重叠的图纸。