Flash CS3 文档 |
|||
| ActionScript 3.0 编程 > 打印 > 设置大小、缩放和方向 | |||
打印页面一节详细介绍了基本打印作业的步骤,此作业的输出直接反映了与指定的 sprite 的屏幕大小和位置等效的打印。然而,打印机使用不同的分辨率进行打印,并且可以具有对打印 sprite 的外观有不利影响的设置。
Flash Player 可以读取操作系统的打印设置,但请注意,这些属性是只读的:虽然可以响应它们的值,但无法进行设置。例如,您可以查明打印机的页面大小设置,并调整内容以适当该大小。您还可以确定打印机的边距设置和页面方向。为响应打印机设置,您最好指定打印区域,调整屏幕的分辨率与打印机的磅度量单位之间的差异,或转换内容以符合用户打印机的大小或方向设置。
使用 PrintJob.addPage() 方法可以指定要打印的 sprite 的区域。第二个参数 printArea 为 Rectangle 对象的形式。您可以选择三种方法来提供该参数的值:
addPage() 调用,如下例所示:private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); myPrintJob.addPage(sheet, rect1);
myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
addPage() 调用中的第三个参数提供值,但不想指定矩形,则可以对第二个参数使用 null,如下所示:myPrintJob.addPage(sheet, null, options);
|
注意 |
|
如果您打算为打印尺寸指定矩形,请记住要导入 |
矩形的宽度和高度以像素为单位。打印机使用磅来作为打印的度量单位。磅的实际大小是固定的(1/72 英寸),但是在屏幕上,像素的大小取决于特定屏幕的分辨率。像素和磅之间的转换比率取决于打印机设置以及 sprite 是否经过缩放。一个 72 个像素宽的 sprite 在未经缩放的情况下打印输出将为一英寸宽,这时,一磅等于一个像素,且与屏幕分辨率无关。
您可以使用以下换算公式将英寸或厘米转换为缇或磅(1 缇为 1/20 磅):
如果省略了 printArea 参数或错误地传递了该参数,将打印 sprite 的整个区域。
如果要在打印前对 Sprite 对象进行缩放,请在调用 PrintJob.addPage() 方法之前设置缩放属性(请参阅处理大小和缩放对象),并在打印后将它们重新设置为原始值。Sprite 对象的缩放与 printArea 属性无关。也就是说,如果指定一个 50 x 50 个像素的打印区域,则会打印 2500 个像素。如果对 Sprite 对象进行缩放,则同样会打印 2500 个像素,但按缩放后的大小打印 Sprite 对象。
有关示例,请参阅示例:缩放、裁剪和拼接。
由于 Flash Player 可以检测方向设置,因此,您可以在 ActionScript 中构建逻辑来调整内容大小或旋转以响应打印机设置,如下例所示:
if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE)
{
mySprite.rotation = 90;
}
|
注意 |
|
如果您打算读取纸张上内容方向的系统设置,请记住要按照以下准则导入 PrintJobOrientation 类: import flash.printing.PrintJobOrientation;
PrintJobOrientation 类提供了定义页面上的内容方向的常量值。 |
使用类似于处理打印机方向设置的策略,可以读取页面高度和宽度设置,并通过将某些逻辑嵌入 if 语句中来响应这些设置。下面的代码显示了一个示例:
if (mySprite.height > myPrintJob.pageHeight)
{
mySprite.scaleY = .75;
}
此外,还可以通过比较页面尺寸和纸张尺寸来确定页面的边距设置,如下例所示:
margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2;
Flash CS3
当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000334.html