选择显示字体大小

flash 8 摄像头拍照

前几天帮朋友做一个东西用到的 code ,因为很久不做 flash coding 了。所以也就很少关心 flash 8 的新的 calss。但听大家说过有这个功能。本想从网上找段教程或 code 来做。可是发现国内还没有类似的。就只能自己动手丰衣足食了。

开始做法:
第一步:在库中建立一个视频元件,类型选择:视频(受 actionscript 控制)。
第二步:将视频元件拖到场景中,并调整尺寸到想要的大小。并起名为“my_video”
第三步:在时间轴中粘入下边的 code :

var my_video:video;
my_video._x=100;
my_video._y=40;
var my_cam:camera = camera.get();
my_cam.setmode(180, 140, 10, true);
my_video.attachvideo(my_cam);

shutter.onrelease = function() {
 mybitmap = new flash.display.bitmapdata(180, 240, true, 0);
 mybitmap.draw(my_video);
 var tempobj = _root.createemptymovieclip("photo", 100);
 tempobj._x = 300;
 tempobj._y = 40;
 tempobj.attachbitmap(mybitmap, 1, "always", true);
};

testing 发现有问题,拍出来照片只有 160x120 的区域有图像。并且图像变形了。

什么地方出了问题呢?

最后发现 my_video 复制到场景中调整大小时并不是改变 my_video.width 及 my_video.height 属性,而是改变 my_video._width 及 my_video._height 属性。原有视频元件的尺寸只有 160x120 。这就相当于将 my_video 作了形变。而 bitmapdata.draw() 是不会考虑源元件的形变的。官方的说法是:源 movieclip 对象不对此调用使用其任何舞台中转换。该源 movieclip 对象会被视为存在于库或文件中,没有矩阵转换、没有颜色转换,也没有混合模式。如果您希望通过使用影片剪辑自身的 transform 属性来绘制影片剪辑,则可以使用它的 transform 对象来传递各种 transformation 属性。

我开始没注意他给出的解决办法。我想既然 draw() 不考虑源元件的形变,那只能自己在输出的照片元件上想办法做形变了。于是有了下面这段 code :

var my_video:video;
my_video._x=100;
my_video._y=40;
var my_cam:camera = camera.get();
my_cam.setmode(180, 140, 10, true);
my_video.attachvideo(my_cam);

shutter.onrelease = function() {
 mybitmap = new flash.display.bitmapdata(160, 120, true, 0);
 mybitmap.draw(my_video);
 var tempobj = _root.createemptymovieclip("photo", 100);
 tempobj._x = 300;
 tempobj._y = 40;
 tempobj._width= 180;
 tempobj._height = 240;
 tempobj.attachbitmap(mybitmap, 1, "always", true);
};

这下照片是想要的大小了,而且图像也没有了变形。但发现图像没有摄像头显示的清晰。
想了一下,那是当然,draw() 不考虑源元件的形变,draw时my_video 被当作 160x120 来draw了。
那能不能通过改变 my_video.width 及 my_video.height 属性来改变 my_video 的尺寸而不是将 my_video 作形变呢?不能!!!my_video.width 及 my_video.height 属性是只读属性。

解决方法:
第一步:用视频编辑软件制作一个 180x240 尺寸的1贞的白色 mov 视频文件。
第二步:用 macromedia flash 8 video encoder 将mov视频文件转为 flv 视频文件。
第三步:在库中建立一个视频元件,类型选择:嵌入(与时间轴同步)。
第四步:将视频元件拖到场景中,并起名为“my_video”testing 发现 my_video.width 及 my_video.height 属性为 180x120 。
第五步:在时间轴中粘入下边的 code :

var my_video:video;
my_video.clear()
my_video._x=100;
my_video._y=40;
var my_cam:camera = camera.get();
my_cam.setmode(180, 140, 10, true);
my_video.attachvideo(my_cam);

shutter.onrelease = function() {
 mybitmap = new flash.display.bitmapdata(160, 120, true, 0);
 mybitmap.draw(my_video);
 var tempobj = _root.createemptymovieclip("photo", 100);
 tempobj._x = 300;
 tempobj._y = 40;
 tempobj._width= 180;
 tempobj._height = 240;
 tempobj.attachbitmap(mybitmap, 1, "always", true);
};

好了,现在所有问题都解决了。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons