javaScript与flash 8.0通信之打印实战篇


  来源:闪吧 | 作者: | 浏览: | 发送给好友 | 添加到收藏夹
  在发贴之前,我希望大家能给我提出宝贵的意见和建议,如有不对的地方,情给予指出;
同时我要感谢闪吧、Action Script讨论区的所以版主以及supertomato.因为这里有许多默默无闻的人为大家提供无偿的帮助,我在次作一点小小的贡献,希望能给大家带来一点小小的收获。谢谢!
      最近为银行作一个凭证打印,应用到了javaScript与flash 8.0的通讯,所以我将这段代码贴出来。起初计划纯粹用javascrip作打印,后来想到要更好的升级(原因就不说啦),所以就用javaScript与flash 8.0来作。
先看界面:

按此在新窗口浏览图片


录入数据,点击确定,执行函数,数据通过javascrip脚本传递到.swf文件中。
界面如:

按此在新窗口浏览图片


代码:

<SCRIPT LANGUAGE=JavaScript>
//alert("lll")
<!--
function sgxg(args){
//alert("lll")
vv=new Array()
ss=new Array()
for(i=0;i<3;i++)
{
  vv[i]=i;
}
for(k=3;k<6;k++)
{
  ss[k]=k;
  
}
ss.shift();
ss.shift();
ss.shift();
ss[2]=12;
op=document.formDate
//alert(op.kemu.value)
var kemu =op.kemu.value;
var dates =op.dates.value;
var account =op.account.value;
var content =op.content.value;
   window.document.myFlash.SetVariable("_level0.datas.kemu.text", kemu);
   //============================================
   time=dates.split("-");
   window.document.myFlash.SetVariable("_level0.datas.years.text", time[0]);
   window.document.myFlash.SetVariable("_level0.datas.months.text", time[1]);
   window.document.myFlash.SetVariable("_level0.datas.days.text", time[2]);
   //==============================================
   window.document.myFlash.SetVariable("_level0.datas.account.text", account);
   window.document.myFlash.SetVariable("_level0.datas.content_start0.text", vv.join("-"));
   window.document.myFlash.SetVariable("_level0.datas.content_end0.text", ss.join("-"));
   window.document.myFlash.TCallFrame("_level0.datas", 0); 
 }
 //-->
</SCRIPT>

其中SetVariable、TCallFrame是javaScrip控制flash的命令。
SetVariable:是给flash中的变量赋值。(就是将javaScrip中数值赋给.swf)
TCallFrame:是执行flash中的actionScript.(主要是执行flash脚本中的打印)
下面是flash界面:

按此在新窗口浏览图片


其中的数据接收帧脚本:

count = 0;
cos1 = content_start0.text;
cos2 = content_end0.text;
content_start = cos1.split("-");
content_end = cos2.split("-");
for (i=0; i<content_start.length; i++) {
 count += (content_end[i]-content_start[i]);
}
this.amount.text = count;
//=========================
//===========
amounts = new Array();
for (i=0; i<content_start.length; i++) {
 amounts[i] = String((content_end[i]-content_start[i])).split("");
 if (amounts[i].length<10) {
  middle = new Array();
  for (k=0; k<10-amounts[i].length; k++) {
   middle[k] = 0;
  }
  amounts[i] = middle.concat(amounts[i]);
  amounts[i].push("0");
  amounts[i].push("0");
 } else {
  amounts[i].push("0");
  amounts[i].push("0");
 }
}
for (s=0; s<amounts.length; s++) {
 for (u=0; u<12; u++) {
  this["amount"+s]["values"+u].text = amounts[s][u];
 }
}
//===================================
if (cos1<>undefined) {
 if (cos1<>"") {
  for (i=0; i<content_start.length; i++) {
   this["content_start"+i].text = content_start[i];
  }
 }
}
if (cos2<>undefined) {
 if (cos2<>"") {
  for (i=0; i<content_end.length; i++) {
   this["content_end"+i].text = content_end[i];
  }
 }
}

源代码:
flash源码:
点击浏览该文件
php源文件:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Untitled Document</title>
</head>
<SCRIPT LANGUAGE=JavaScript>
//alert("lll")
<!--
function sgxg(args){
//alert("lll")
vv=new Array()
ss=new Array()
for(i=0;i<3;i++)
{
  vv[i]=i;
}
for(k=3;k<6;k++)
{
  ss[k]=k;
  
}
ss.shift();
ss.shift();
ss.shift();
ss[2]=12;
op=document.formDate
//alert(op.kemu.value)
var kemu =op.kemu.value;
var dates =op.dates.value;
var account =op.account.value;
var content =op.content.value;
   window.document.myFlash.SetVariable("_level0.datas.kemu.text", kemu);
   //============================================
   time=dates.split("-");
   window.document.myFlash.SetVariable("_level0.datas.years.text", time[0]);
   window.document.myFlash.SetVariable("_level0.datas.months.text", time[1]);
   window.document.myFlash.SetVariable("_level0.datas.days.text", time[2]);
   //==============================================
   window.document.myFlash.SetVariable("_level0.datas.account.text", account);
   window.document.myFlash.SetVariable("_level0.datas.content_start0.text", vv.join("-"));
   window.document.myFlash.SetVariable("_level0.datas.content_end0.text", ss.join("-"));
   window.document.myFlash.TCallFrame("_level0.datas", 0); 
   
  /* for(i=0;i<time.length;i++)
   {
   alert(time[i])
   }*/
}
function printDatas()
{
  alert("exe printDates")
  //op=document.formDate
  window.document.myFlash.SetVariable("_level0.i", 1);
   window.document.myFlash.TCallFrame("_level0",0);    
}
//-->
</SCRIPT>
<body>
<p align="center">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0
width="550" height="300" id="myFlash" >
    <param name="movie" value="bank.swf">
    <param name="quality" value="high">
    <embed src="http://www.7880.com/Info/bank.swf" quality="high" pluginspage=http://www.macromedia.com/go/getflashplayer
 type="application/x-shockwave-flash" width="550" height="300" name="myFlash"></embed>
  </object>
</p>
<form name="formDate" method="post" action="" >
<table width="600" border="0" align="center">
  <tr>
    <td align="right">科目:</td>
    <td>&nbsp;<input type="text" name="kemu" maxlength="45"></td>
    <td align="right">日期:</td>
 <td>&nbsp;<input type="text" name="dates" maxlength="45"></td>
  </tr>
  <tr>
    <td align="right">帐号:</td>
    <td>&nbsp;<input type="text" name="account" maxlength="45"></td>
    <td align="right">摘要:</td>
    <td>&nbsp;<input type="text" name="content" maxlength="45"></td>
  </tr>
  <tr>
     
    <td colspan="4" align="center"><input type="button"   maxlength="45"  value="确定" onClick="sgxg(this)">&nbsp;
 <input type="button"   maxlength="45"  value="打印" onClick="printDatas()"></td>
  
  </tr>
 
</table>
  <p>&nbsp;    </p>
</form>
<p>&nbsp;</p>
</body>
</html>

参考:
Play() -------------------------------------------------------- 播放动画
StopPlay()--------------------------------------------------- 停止动画
IsPlaying()--------------------------------------------------- 动画是否正在播放
GotoFrame(frame_number)---------------------------- 跳转到某帧
TotalFrames()---------------------------------------------- 获取动画总帧数
CurrentFrame()-------------------------------------------- 回传当前动画所在帧数-1
Rewind()---------------------------------------------------- 使动画返回第一帧
SetZoomRect(left,top,right,buttom)--------------- 放大指定区域
Zoom(percent)-------------------------------------------- 改变动画大小
Pan(x_position,y_position,unit)----------------------- 使动画在x,y方向上平移
PercentLoaded()------------------------------------------ 返回动画被载入的百分比
LoadMovie(level_number,path)----------------------- 加载动画
TGotoFrame(movie_clip,frame_number)----------- movie_clip跳转到指定帧数
TGotoLabel(movie_clip,label_name)----------------- movie_clip跳转到指定标签
TCurrentFrame(movie_clip)----------------------------- 回传movie_clip当前帧-1
TCurrentLabel(movie_clip)------------------------------ 回传movie_clip当前标签
TPlay(movie_clip)------------------------------------------ 播放movie_clip
TStopPlay(movie_clip)----------------------------------- 停止movie_clip的播放
GetVariable(variable_name)---------------------------- 获取变量
SetVariable(variable_name,value)--------------------- 变量赋值
TCallFrame(movie_clip,frame_number)-------------- call指定帧上的action
TCallLabel(movie_clip,label)----------------------------- call指定标签上的action
TGetProperty(movie_clip,property)------------------ 获取movie_clip的指定属性
TSetProperty(movie_clip,property,number)------- 设置movie_clip的指定属性

上一篇
闪动论坛 打印此页 发送给好友 返回顶部