请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 6271|回复: 1

[你知道吗]--Flash中的打印控制 [复制链接]

vibo 楼主
帖子
39
体力
358
威望
85
发表于 2006-7-21 15:12:32 |显示全部楼层
这个估计很多人没有关心过。但是很有用。我贴上来吧。

Flash中负责打印的类是 PrintJob

首先了解它一下

属性:
orientation:String [只读] 图像的打印方向。图像的打印方向。此属性可以为 "landscape" 或 "portrait"。请注意,只有在调用 PrintJob.start() 方法后,此属性才可用。

pageHeight:Number [只读] 页面上实际可打印区域的高度(以磅为单位)。
pageWidth:Number [只读] 页面上实际可打印区域的宽度(以磅为单位)。
paperHeight:Number [只读] 纸张总高度(以磅为单位)。
paperWidth:Number [只读] 纸张总宽度(以磅为单位)。
法:
addPage(target:Object, [printArea:Object], [options:Object], [frameNum:Number]) : Boolean
target:Object - 一个数字或字符串;要打印的影片剪辑的级别或实例名称。传递一个数字来指定级别(例如,0 表示 _root 影片)或传递一个字符串(括在引号中 [""])来指定影片剪辑的实例名称。

printArea:Object [可选] - 一个对象,它指定要打印的区域,采用以下格式:  


程序代码
{xMin:topLeft, xMax:topRight, yMin:bottomLeft, yMax:bottomRight}


为 printArea 指定的坐标表示屏幕像素,这些屏幕像素相对于 _root 影片剪辑(如果 target = 0)的注册点或由 target 指定的级别或影片剪辑的注册点。您必须提供所有四个坐标。宽度 (xMax-xMin) 和高度 (yMax-yMin) 必须均大于 0。   

磅是打印度量单位,像素是屏幕度量单位;磅的实际大小是固定的(1/72 英寸),但是像素的大小取决于特定屏幕的分辨率。您可以使用以下换算公式将英寸或厘米转换为缇或磅(1 缇为 1/20 磅):  

1 磅 = 1/72 英寸 = 20 缇  
1 英寸 = 72 磅 = 1440 缇  
1 厘米 = 567 缇  
您无法可靠地在像素和磅之间转换;转换比率取决于屏幕及其分辨率。例如,如果屏幕设置为每英寸显示 72 个像素,则一磅等于一个像素。  

注意:如果以前曾使用 print()、printAsBitmap()、printAsBitmapNum() 或 printNum() 从 Flash 进行打印,则可能使用过 #b 帧标签来指定要打印的区域。当使用 addPage() 方法时,您必须使用 printArea 参数来指定打印区域;#b 帧标签将被忽略。

如果省略了 printArea 参数或错误地传递了该参数,则将打印 target 的整个舞台区域。如果您不希望指定 printArea 的值,但希望指定 options 或 frameNumber 的值,请为 printArea 传递 null。

options:Object [可选] - 一个参数,它指定打印为矢量还是打印为位图,采用以下格式:  

{printAsBitmap:Boolean}

默认值为 false,表示请求矢量打印。若要将 target 打印为位图,请为 printAsBitmap 传递 true。当确定要使用的值时,请记住以下建议:

如果要打印的内容包括位图图像,请使用 {printAsBitmap:true} 以包括任何透明度和色彩效果。  
如果内容不包括位图图像,请省略此参数或者使用 {printAsBitmap:false} 以较高品质的矢量格式打印内容。  
如果省略或错误传递了 options,则使用矢量打印。如果您不希望指定 options 的值,但希望指定 frameNumber 的值,请为 options 传递 null。

frameNum:Number [可选] - 一个数字,用于指定要打印的帧;传递 frameNumber 不会导致调用该帧上的 ActionScript。如果省略此参数,则打印 target 中的当前帧。  

注意:如果以前曾使用 print()、printAsBitmap()、printAsBitmapNum() 或 printNum() 从 Flash 进行打印,则可能在多个帧上使用过 #p 帧标签以指定要打印哪些页。若要使用 PrintJob.addPage() 打印多个帧,必须对每个帧发出 PrintJob.addPage() 命令;#p 帧标签将被忽略。有关以编程方式执行此操作的方法,请参见"示例"部分。  

返回
Boolean - 一个布尔值:如果页成功发送到打印后台处理程序,则返回 true;否则返回 false。


send() : Void
用在 PrintJob.start() 和 PrintJob.addPage() 方法之后,将经过后台处理的页发送到打印机。
start() : Boolean
显示操作系统的打印对话框并开始进行后台处理

PrintJob 构造函数

var my_pj:PrintJob = new PrintJob();


范例1:
--------------------------打印一个影片剪辑.----------------------
  1. //pt2_mc 为影片剪辑名称
  2. var my_pj:PrintJob = new PrintJob();
  3. var myResult:Boolean = my_pj.start();
  4. if (myResult) {
  5.     my_pj.addPage(pt2_mc);
  6.     my_pj.send();
  7. } else {
  8.     trace("没有进行打印或打印失败");
  9. }
  10. delete my_pj;
复制代码


范例2:
------------------------------多页打印---------------------------

  1. //pt2_mc 为影片剪辑名称
  2. //打印结果为三页
  3. var my_pj:PrintJob = new PrintJob(); //构造函数
  4. if (my_pj.start()) {
  5.     var pagesToPrint:Number = 0;
  6.     if (my_pj.addPage(pt2_mc)) {
  7.         pagesToPrint++;
  8.     }
  9.     if (my_pj.addPage(pt_mc)) {
  10.         pagesToPrint++;
  11.     }
  12.     if (my_pj.addPage(pt_mc)) {
  13.         pagesToPrint++;
  14.     }
  15.     if (pagesToPrint>0) {
  16.         my_pj.send();
  17.     }
  18. }
  19. delete my_pj;
复制代码


大家开始玩吧!~

[ 本帖最后由 vibo 于 2006-7-21 15:43 编辑 ]
已有 1 人评分威望 收起 理由
mirycat + 1 原创内容

总评分: 威望 + 1   查看全部评分

西部数码顶级域名注册商39元抢注!
henry5 
帖子
3
体力
17
威望
0
居住地
广东省 珠海市
发表于 2008-6-23 04:34:23 |显示全部楼层

D

真的冷门知识咯,我只是路过,但控制不了回头D一下
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 08:14 , Processed in 0.081373 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部