| 在讨论这个问题之前,先来了解一下flash传值问题。 在论坛经常看到这样的提问,下面的效果是如何实现的,如下:http://2008.ab12.cn:2008/arthur/21312/lover-6.swf?aa=欢迎参观我的空间!
 即在网址上输入文本,在flash中就能够显示出来。
 其实原理很简单。这用到的就是静态传值的知识。 1.先看看flash静态传值的简单实现: 首先新建一个名为myflash的flash文件 在舞台用文本工具建一个动态文本框,命名为aa,然后在第一桢输入mytxt.text=val,按enter测试,文本框显示为undefined,你开始纳闷了,不奇怪,因为你还没有赋值。 下面我们在地址栏输入http://localhost/myflash.swf?val=你好,世界!(注意:你要将动画上传到网页空间[那就要在你的文件绝对地址后增加‘val=你好,世界!了’]或是在自己机子上装有服务器,我是在自己机子上装要IIS), 奇迹发生了,怎么样,你的动画舞台上是不是也显示了” 你好,世界!”(改一改等于号后面的文字试试),这就是变量被传到了flash。 知道了运行的原理,上面的问题轻而易举就解决了,相信许多聪明的朋友就会使用这一知识来做比上面更加酷的效果,用来装饰自己的空间了(呵呵,我的QQ空间就使用了)。 其实我们还可以同时向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>
 (试试效果是不是一样)当然,你也可以使用js设置你传入的值为变量,并根据你的要求而变化(这我就不做详细的讨论了)
 知道了上面的原理,要对广告的点击进行统计也不是一件难事了(http://localhost/count.htm要根据你的主机地址相应地变化)。那么就让我们来研究一下其中的原理(详细代码就不提供了,因为这其中要实现的功能各式各样,相信知道了其中的原理再想实现功能就只是编程高低的问题了,呵呵,申明一下,本人也是一菜鸟,所以还请高手不要取笑)
 新建一个动画文件,存储为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" /> 那么用户对广告的反应是如何被跟踪的呢?如图: 
 原来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级了,所以有时间才贴出来,其实只要学习过动态语言,知道了原理,编个计数器也不是很难事),明明知道的东西要表达清楚还真的不是很容易的事呀,原来写教程真的是件比较辛苦的事呀....... 申明一下:我不是职业的写家(允许发表不同的意见,但是别说不雅的话,谢谢了)。
 发表这样的帖子也是由于我曾经也有过这样疑惑,也是看了那些许多热心人的帖子(如寂寞火山,帮打个广告,),学了很多东西,也对flash的后台产生了兴趣,才对FLASH产生兴趣,才会去研究其它相关的动态语言,所以在论坛看到许多人提出这样的疑惑,就用自己所掌握的,尽量为大家解析一下。这是我初次写教程(费了不少的心血,也许是打字太慢吧,真的比较累哦),也许在高手眼中不是很专业,但是我是很用心的。
 经典论坛交流:本文链接:http://www.blueidea.com/tech/multimedia/2008/5715.asphttp://bbs.blueidea.com/thread-2849267-1-1.html
   出处:蓝色理想
责任编辑:bluehearts
 ◎进入论坛RIA设计与应用版块参加讨论
	      |