自由领域接口版本大头贴部分代码分析:
前几天完成了非接口版本大头贴的制作,后经网友要求,需要在上传图片时候附上评语或自序。于是发觉以前的版本太过于集成化使得用户无法根据自己的需要开发。
考虑到Flash8和Javascript能够很好的结合在一起,于是有了制作接口的想法。
首先:要确定需要什么功能,对外开放什么功能接口,对内保留什么函数,处理完后回调什么函数。(有点像类)。
再次:确定后就可以开始书写函数块,然后把处理代码放入函数块中
注重:假如要实现功能的可扩展性,回调是必不可少的(也就是说要一方面提供用户接口函数,另一方面将Flash自身的运行状态反馈给网页搭建者)
下面是部分函数块:(闪吧中笨耗子也对大头贴代码进行了相关说明这里我就不具体说明了)
下面的内容其实是对以前的代码重排 将他们根据功能分到相应的函数中
//导入类库文件
import flash.external.*;
import flash.display.BitmapData;
…… ……
//初始化函数块
function Initial()
{
//取得摄像头对象
var cam:Camera = Camera.get();
_root.camer2_mc._visible=false;
//判定摄像头是否可用
if (cam == null)
{
_global.ok=false;
//将错误信息框移入当前区域
errornocamera_mc._x=37;
errornocamera_mc._y=23;
jdt._visible =false;
//返回函数(初始化失败时回调)
ExternalInterface.call("Inifail");
}
else
{ errornocamera_mc._x=300;
_global.ok=true;
my_video.attachVideo(cam);
jdt._visible =false;
jdt.indeterminate =true;
jdt.source =_root.xk_mc;
jdt.mode ="polled";
//下面是上传进度条
jdt2.indeterminate =false;
jdt2.minimum=0;
jdt2.mode ="manual";
//返回初始化成功函数调用
ExternalInterface.call("Iniok");
}
}
//Capture函数块
function Capture()
{ if(_global.ok==true){
_root.camer2_mc._visible=true;
imger.draw(my_video);
_root.camer2_mc.camerabox_mc.attachBitmap(imger, 1);
//拍照完成回调函数
ExternalInterface.call("Capok"); }
}
…… ……
//========内部函数 外部不可访问 用于对图像像素扫面 Start========
function scanPhoto(){
var pix:Number;
var tem:Number;
var pixer:String;
PX[thehang]=new Array();
for(w=0;w<my_video._width;w++){
pix=imger.getPixel(w,thehang)
jdt2.setProgress(t,my_video._width*my_video._height);
pixer=pix.toString(16);
t++;
tem=6-pixer.length;
trace(pixer);
if(tem!=0){
for (ii=0;ii<tem;ii++){pixer="0"+pixer;}
}
PX[thehang].push(pixer);
}
thehang +=1;
if(thehang>=my_video._height){
jdt2._visible=false;
upbg_mc._visible=false;
jdt2.setProgress(0,my_video._width*my_video._height);
t=1;
clearInterval(_root.ID);
var sender=new LoadVars();
for(i=0;i<my_video._height;i++){
sender["PX"+i]=_root.PX[i];
}
//发送数据给后台处理页面
sender.sendAndLoad(_global.aspfilename,sender,"POST");
sender.onLoad =function(success){
if(success){
filename =this.thisfile;
//上传成功后回调此函数
ExternalInterface.call("Upok",filename);
}else{
//上传失败后回调此函数
ExternalInterface.call("Upfail");
}
}
}
}
//=========内部函数 外部不可访问 End===========
…………
//此部分相当于 注册接口 告诉flash 监听 从javascript传来的对以下函数的调用
ExternalInterface.addCallback("Showversion",this,Showversion);
ExternalInterface.addCallback("Changepic",this,Loadpic);
ExternalInterface.addCallback("Initial",this,Initial);
ExternalInterface.addCallback("Uppic",this,Uppic);
ExternalInterface.addCallback("Capture",this,Capture);
…… ……
这样编译生成swf后 用户就可以很方便的通过HTML中的javascript来控制Flash的采集、更换相框、上传。(甚至用户可以自己设计界面和按钮的美工)
用户可以根据flash的回调,来控制表单的提交,这样就可以使使用者自己在一次点击后便将大头贴和自定义的数据分别提交给不同的处理页面。
有了Flash8和Javascript 我想Flash会变得越来越灵活越来越强大
有爱好的朋友 可以访问我们的网站
http://www.tfot.net 下载接口版本(TP-I)的程序
也可以到我们的帮助中心http://www.tfot.net/tfdn/forum.htm查看我们的接口函数的具体说明
接口测试预览页面:http://www.tfot.net/test/tpi/
非接口测试预览页面:http://www.tfot.net/test/myphoto
你可以感受一下两者的不同