JavaScript与Flash 8.0通信之打印实战篇

javascript|打印

  在发贴之前,我希望大家能给我提出宝贵的意见和建议,如有不对的地方,情给予指出; 同时我要感谢闪吧、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="http://www.webjx.com/htmldata/2005-11-21/bank.swf">
    <param name="quality" value="high">
    <embed src="http://www.webjx.com/htmldata/2005-11-21/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> <input type="text" name="kemu" maxlength="45"></td>
    <td align="right">日期:</td>
 <td> <input type="text" name="dates" maxlength="45"></td>
  </tr>
  <tr>
    <td align="right">帐号:</td>
    <td> <input type="text" name="account" maxlength="45"></td>
    <td align="right">摘要:</td>
    <td> <input type="text" name="content" maxlength="45"></td>
  </tr>
  <tr>
     
    <td colspan="4" align="center"><input type="button"   maxlength="45"  value="确定" > 
 <input type="button"   maxlength="45"  value="打印" ></td>
  
  </tr>
 
</table>
  <p>     </p>
</form>
<p> </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的指定属性

时间: 2024-11-08 20:15:31

JavaScript与Flash 8.0通信之打印实战篇的相关文章

关于 JavaScript 和 Flash 间的通信

javascript 本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信----使用Flash播放器的javascript方法 Flash 到 Javascript的通信----使用Flash的fscommand Flash 到 Flash的通信----------使用本地连接对象或综合上2种技术 前言.JavaScript和Macromedia Flash的通信示例 原文地址: http://www.macromedia.com/supp

JavaScript和Flash的通信

javascript 说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威 下面是一些在Flash和使用javascript的HTML文件直接通信的示例,每个示例都有简略的步骤 本文讨论了3种基本的Flash/javascript通信方式: > javascript 到 Flash的通信----使用Flash播放器的javascript方法 > Flash 到 javascript的通信----使用Flash的fscommand > Flash 到 Flash的通

JavaScript 和 Flash 的通信

javascript <embed src="http://www.webjx.com/htmldata/2005-04-09/javascript_to_flash.swf" quality=highwidth=366 height=142type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P

Javascript与flash交互通信基础教程_javascript技巧

下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每个示例都有简略的步骤 本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信----使用Flash播放器的javascript方法 Flash 到 Javascript的通信----使用Flash的fscommand Flash 到 Flash的通信----------使用本地连接对象或综合上2种技术 并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览

JavaScript与ActionScript 3.0交互的一些问题

这两天做基于 Flash9(ActionScript 3.0)的 JavaScript PHPRPC 3.0 客户端时遇到了一些 JavaScript 与 ActionScript 3.0 交互的一些问题,这些问题在网上基本上都没有找到答案,最后通过不断的尝试才得以解决,因此在这里总结出来,希望能给遇到同样问题的同志们一些帮助. JavaScript 跟 ActionScript 3.0 交互也是通过 flash.external.ExternalInterface 这个类,不过与跟 Flash

用php的socket跟flash的socket通信

关于socket不多说了,这个网上的资料很多,关于flash的资料也很多,这里只说在网上找不到资料或者资料很少的哦东西 php的socket资料可谓少之又少,光是在google上搜php socket,出来的结果页就是那么三四篇文章,点进去看看,基本都是 从手册上抄下来的,一点问题都起不了,以至于我花了两天时间才使php和flash成功通信,呵呵 其实,php和flash的socket通信不是问题的难点,难点在于flash的安全策略,特别是socket,特别是在flash player 10中要

javascript获取flash版本号的方法_javascript技巧

本文实例讲述了javascript获取flash版本号的方法.分享给大家供大家参考.具体分析如下: 下面我们来介绍两个js函数判断用户是否安装了flash,如果安装了flash再来获取 flash版本号并且给出提示. 例1 获取各浏览器的版本号,如需获取具体版本号数字 复制代码 代码如下: function flashChecker() {     var hasFlash = 0; //是否安装了flash     var flashVersion = 0; //flash版本     var

网页页面中如何用Javascript调用Flash动画?

flash动画|javascript|网页|页面 问:网页页面中如何用Javascript调用Flash动画? 答: 在<HEADE>区加入  程序代码 <script src="js/flash.js" type="text/javascript"></script> 在调用FLASH处加入  程序代码 <script language="JavaScript" type="text/java

Flash AS3.0实现逼真喷泉效果

核心提示:Flash AS3.0实现逼真喷泉效果教程. 我们将介绍利用速度向量和重置对象的技巧来实现喷泉效果.所谓向量就是有方向的量.比如一辆车从东向西以80公里每小时的速度行驶,那么我们就可以得到汽车的速度向量,它包括两个元素:速度,每小时80公里,方向,由东向西. 下面我们来分析一下喷泉是怎样形成的? 喷泉是若干个水珠向上喷射,然后又受重力影响掉回地面.这个过程的速度向量有哪些,具体又是怎么的呢?很容易发现至少的两个力,一个是使水珠向上喷射的外力,一个是使水珠掉回地面的重力. 外力的速度向量