当前位置:首页 » 文章 »正文

flash打造视频照相系列教程三

来源:blogs uncool   时间: [ ] 浏览次数:209 [ 打印 ] [ 关闭 ] [ 收藏 ]

到了这一步,基本上算是差不多了,在大体的框架上,就剩下预览与保存的做法了。

       第一步:预览

       在我们已经把视频,TileList组装完成后,就需要实现一个功能,就是我们需要重新预览下以前拍的照片,那么由此所引申出来的动作必然就是我们需要点击在TileList里的小图,这一步很简单,我们先来玩一个TileList点击的小代码,后面就套一下,就很容易了。
      按照第二部分,认识TileList刚开始的那段小代码,新的代码如下:

import fl.events.ListEvent;
var i:uint;
for(i=0;i<10;i++){
  var tempMc:Object= new Object();
  tempMc.label = "PIC"+i;
  tempMc.source = new mc();
  lists.addItem(tempMc);
 
}
lists.addEventListener(ListEvent.ITEM_CLICK,thumbClick);
function thumbClick(event:ListEvent):void{
  trace(event.item.label);
}

 
      从上面简单的代码,就能知道在TileList里单击其中的图标,该怎么去实现。

--------------------------------------------------------------------------------

      好,那么重新我们回到原来的例子上,我们已经知道TileList点击怎么实现,那么我们需要在舞台上放一个空的实例,用于加载点击图标后,传输过来的具体内容,我们这里只需要图,别的不需要。当然你可以同样传送其他信息。

      我的打算是新的预览实例放在X轴为340,Y轴为0,同时在舞台上再放一个BUTTON,实例名:down_btn,用于保存事件的触发
      预览的做法也是跟截图的做法一样,用Bitmap,和BitmapData,在前面的教程代码上继续加代码:

import fl.events.ListEvent;
var review:Sprite;
function thumbClick(event:ListEvent):void {
  var bmd:BitmapData=new BitmapData(320,240);
  bmd.draw(event.item.source);
  var bit:Bitmap=new Bitmap(bmd);
  review = new Sprite();
  addChild(review);
  review.x = 340;
  review.addChild(bit);
  //用于下载当前的图片
  //down_btn.addEventListener(MouseEvent.CLICK,downJpg);
}


       这样,这部分的功能算是完成了,也不难。下一部分的内容在于把当前的图保存到本地上,这个有很多方法,我说的是其中一种,但是大体的思路都是一样的。我先说下我的思路。
      还记得我以前写的Flash简易***教程里的三板斧教程吗?这个主要讲的是FLASH里的数据传输到外部服务器的,这里我要保存图片,那么也是把当前的图片数据传输出去,那么我们就需要CORDLIB里的一个类:JPGEncoder类,把当前的图片数据转化成ByteArray,传输出去,如果你像我用的是PHP的话,就可以用PHP把ByteArray写到本地上,变回原来的图片。


--------------------------------------------------------------------------------

  
       第二步:保存
       首先我们要去http://code.google.com/p/as3corelib/把JPGEncoder类下下来。

       然后下一步就是继续完成down_btn按钮触发的下载事件构造函数:downJpg 
      


import flash.utils.ByteArray;
import com.adobe.encoding.JPEGEncoder;
function downJpg(event:MouseEvent):void {
  //?name=@@@@@@就是设置下载下来的图片名字,这个可以根据你自己想要的来修改。
  var url:String="http://localhost/downjpg.php?name=testJpg.jpg";

  var bmd:BitmapData = new BitmapData(320,240);
  bmd.draw(review);
  //下载截图质量设置
  var jpgEncoder:JPEGEncoder=new JPEGEncoder(100);
  var myByteArray:ByteArray=jpgEncoder.encode(bmd);
 
  //发送数据到PHP服务器端,然后自动弹出,我下面会提供一个PHP文件,供你测试,反正
  //根据我以前的做的很多东西来看,方法有N多。这是其中之一
  var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
  var request:URLRequest=new URLRequest(url);
  request.requestHeaders.push(header); 
  request.method=URLRequestMethod.POST;
  request.data=myByteArray;
 
  var loader:URLLoader = new URLLoader();
  navigateToURL(request, "_blank");
}


PHP端的代码:

<?php
if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] )) {
  $im = $GLOBALS["HTTP_RAW_POST_DATA"];
  header('Content-Type: image/jpeg');
  header("Content-Disposition: attachment; filename=".$_GET['name']);
  echo $im; 
}  else echo 'An error occured.';
?>

      你能测试出来吗?如果在下载弹出有错误的时候,你可以按F12发布,在网页上直接来试试。基本上,我这里是测试成功了。
文章来自: 闪无忧(www.5uflash.com) 详文参考:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/4790.html

 

责编:uyang

  1. 联系方式:
  •  
  •  
  •  

QQ:87935355
Email:hxcm.net@gmail.com
电话:13696917287

  1. Asp.net编程
  2. FMS编程
  3. 网站建设
  版权所有: 环讯网络传媒
Copyright (c) 2008 hxcm.Net.Com All rights reserved