在发贴之前,我希望大家能给我提出宝贵的意见和建议,如有不对的地方,情给予指出; 同时我要感谢闪吧、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="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"&nb