在讨论这个问题之前,先来了解一下flash传值问题。
4 D4 y1 X* \& L8 G" P5 |
在
论坛经常看到这样的提问,下面的效果是如何实现的,如下:
4 ?8 m; K% o7 D, D( c" G) d; Chttp://2008.ab12.cn:2008/arthur/21312/lover-6.swf?aa=欢迎参观我的
空间!
# Z) U$ e0 Z4 `* ~- e0 f. |即在网址上输入文本,在flash中就能够显示出来。
, X* L- G$ U9 a5 Y) V; f其实原理很简单。这用到的就是静态传值的知识。
# K% R5 D0 L" j: d6 w4 }/ }+ p1.先看看flash静态传值的简单实现:
+ Y9 R6 q4 m! O, B( O9 H首先新建一个名为myflash的flash文件
% c5 j7 x8 |1 W- n: _在舞台用文本工具建一个动态文本框,命名为aa,然后在第一桢输入mytxt.text=val,按enter测试,文本框显示为undefined,你开始纳闷了,不奇怪,因为你还没有赋值。
" G; M; @( b6 B& j, h9 X' z
下面我们在地址栏输入
http://localhost/myflash.swf?val=你好,世界!(注意:你要将动画上传到网页空间[那就要在你的文件绝对地址后增加‘val=你好,世界!了’]或是在自己机子上装有
服务器,我是在自己机子上装要
IIS), 奇迹发生了,怎么样,你的动画舞台上是不是也显示了” 你好,世界!”(改一改等于号后面的文字试试),这就是变量被传到了flash。
4 l; M1 i J& O- j1 q- F知道了运行的原理,上面的问题轻而易举就解决了,相信许多聪明的朋友就会使用这一知识来做比上面更加酷的效果,用来装饰自己的空间了(呵呵,我的QQ空间就使用了)。
7 M: X. o3 h2 k7 o# w其实我们还可以同时向flash传递多个值:在flash中如何使用这些变量和值,就在于你了(总不至于有多少个变量就设多少个文本框吧)。(注意:变量和值间必须使用值对的形式,如:
复制内容到剪贴板
代码:
company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103)
2.也可以在网页<object>中赋予flash变量(为了观看,其他参数省略)
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs
/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="myflash" align="middle">
<param name="movie" value="myflash.swf?val=你好,世界" />
</object>试试效果是不是一样)
k, d8 j& O, O* J8 B7 W
当然,你也可以使用js设置你传入的值为变量,并根据你的要求而变化(这我就不做详细的讨论了)
8 C6 w: `) L, R
知道了上面的原理,要对
广告的点击进行统计也不是一件难事了(
http://localhost/count.htm要根据你的
主机地址相应地变化)。
) G" |/ e' k' Y1 s, t( ~那么就让我们来研究一下其中的原理(详细代码就不提供了,因为这其中要实现的功能各式各样,相信知道了其中的原理再想实现功能就只是编程高低的问题了,呵呵,申明一下,本人也是一菜鸟,所以还请高手不要取笑)
G+ Z; ]) K( q6 @* d+ f" a
新建一个动画文件,存储为myflash,在舞台建一个按钮,赋予脚本:
复制内容到剪贴板
代码:
on(release){getURL(”http://localhost/count.htm?clicktag”+clicktag+”detail.htm”);}发布动画,打开其中的myflash.html文件,将参数<param name="movie" value="myflash.swf" />修改为<param name="movie" value="myflash.swf?clicktag=http://localhost" />
: t/ F% a: V8 e3 Y那么用户对广告的反应是如何被跟踪的呢?如图:
( W" [: n1 b& g" h$ c
原来clicktag变量值定义的URL首先传递给
http://localhost/count.htm这个负责跟踪统计的站点,此页面一般是使用动态页面如asp,jsp等,呵呵懂得jsp或者其他的动态语言的用户就有用武之地了, 只要截取clicktag变量,每传过来一次就加一次(废话:当然你也可以作弊,不妨多加几次来迷糊用户一下),这页面一般不会直接显示给用户(当然也可以拉),而后再由该站点设置一个称为“重定向“的技术转向
http://localhost/ detail.htm页面(也就是你点击广告后打开的页面),IIS有设置重定向的功能.至于重定向,恰好我这有个经常用的,提供给大家参考下
复制内容到剪贴板
代码:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>myflash</title>
</head>
<body bgcolor="#ffffff">
<div align="center">
<font size="5"></font>
<script language="javascript">
<!--
function getvalue(r){
var countbegin;
var countend;
var count;
var s=location.search;
var d="?";
var index=s.indexOf(r);
if(index!=-1){
countbegin=(s.indexOf("=",index)+1);
countend=s.indexOf(d,index);
if(countend==-1){
countend=s.length;
}
count=s.substring(countbegin,countend);
return (count);
}
}
//记录clicktag的值
document.write('点击的代码:'getvalue("clicktag");+'<br>');
//新打开一个窗口,重定向到目标URL
window.open(getvalue("clicktag")
-->
</script>
</div>
</body>
</html>哎,本来以为半小时能够完成的,结果花了差不多3个小时(而且只是简单地叙述了原理和过程,因为我写的那个实现过程比较长,又要考6级了,所以有时间才贴出来,其实只要学习过动态语言,知道了原理,编个计数器也不是很难事),明明知道的东西要表达清楚还真的不是很容易的事呀,原来写教程真的是件比较辛苦的事呀.......
) X, N' B" \6 |( P3 _% w. ? U) U申明一下:# X/ u5 n7 H% f6 D. y' o# k
我不是职业的写家(允许发表不同的意见,但是别说不雅的话,谢谢了)。
3 H& M# I0 f/ o; c3 ]发表这样的帖子也是由于我曾经也有过这样疑惑,也是看了那些许多热心人的帖子(如寂寞火山,帮打个广告,),学了很多东西,也对flash的后台产生了兴趣,才对FLASH产生兴趣,才会去研究其它相关的动态语言,所以在论坛看到许多人提出这样的疑惑,就用自己所掌握的,尽量为大家解析一下。这是我初次写教程(费了不少的心血,也许是打字太慢吧,真的比较累哦),也许在高手眼中不是很专业,但是我是很用心的。