在討論這個問題之前,先來了解一下flash傳值問題。
在論壇經(jīng)常看到這樣的提問,下面的效果是如何實現(xiàn)的,如下: http://2008.ab12.cn:2008/arthur/21312/lover-6.swf?aa=歡迎參觀我的空間! 即在網(wǎng)址上輸入文本,在flash中就能夠顯示出來。
其實原理很簡單。這用到的就是靜態(tài)傳值的知識。
1.先看看flash靜態(tài)傳值的簡單實現(xiàn):
首先新建一個名為myflash的flash文件
在舞臺用文本工具建一個動態(tài)文本框,命名為aa,然后在第一楨輸入mytxt.text=val,按enter測試,文本框顯示為undefined,你開始納悶了,不奇怪,因為你還沒有賦值。
下面我們在地址欄輸入http://localhost/myflash.swf?val=你好,世界!(注意:你要將動畫上傳到網(wǎng)頁空間[那就要在你的文件絕對地址后增加‘val=你好,世界!了’]或是在自己機子上裝有服務器,我是在自己機子上裝要IIS), 奇跡發(fā)生了,怎么樣,你的動畫舞臺上是不是也顯示了” 你好,世界!”(改一改等于號后面的文字試試),這就是變量被傳到了flash。
知道了運行的原理,上面的問題輕而易舉就解決了,相信許多聰明的朋友就會使用這一知識來做比上面更加酷的效果,用來裝飾自己的空間了(呵呵,我的QQ空間就使用了)。
其實我們還可以同時向flash傳遞多個值:在flash中如何使用這些變量和值,就在于你了(總不至于有多少個變量就設多少個文本框吧)。(注意:變量和值間必須使用值對的形式,如:company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103)
2.也可以在網(wǎng)頁<object>中賦予flash變量(為了觀看,其他參數(shù)省略)
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="<param name="movie" value="myflash.swf?val=你好,世界" /> </object>
(試試效果是不是一樣) 當然,你也可以使用js設置你傳入的值為變量,并根據(jù)你的要求而變化(這我就不做詳細的討論了)
知道了上面的原理,要對廣告的點擊進行統(tǒng)計也不是一件難事了(http://localhost/count.htm要根據(jù)你的主機地址相應地變化)。 那么就讓我們來研究一下其中的原理(詳細代碼就不提供了,因為這其中要實現(xiàn)的功能各式各樣,相信知道了其中的原理再想實現(xiàn)功能就只是編程高低的問題了,呵呵,申明一下,本人也是一菜鳥,所以還請高手不要取笑)
新建一個動畫文件,存儲為myflash,在舞臺建一個按鈕,賦予腳本:
on(release){getURL(”http://localhost/count.htm?clicktag”+clicktag+”detail.htm”);}
發(fā)布動畫,打開其中的myflash.html文件,將參數(shù)<param name="movie" value="myflash.swf" />修改為<param name="movie" value="myflash.swf?clicktag=http://localhost" />
那么用戶對廣告的反應是如何被跟蹤的呢?如圖:
原來clicktag變量值定義的URL首先傳遞給http://localhost/count.htm這個負責跟蹤統(tǒng)計的站點,此頁面一般是使用動態(tài)頁面如asp,jsp等,呵呵懂得jsp或者其他的動態(tài)語言的用戶就有用武之地了, 只要截取clicktag變量,每傳過來一次就加一次(廢話:當然你也可以作弊,不妨多加幾次來迷糊用戶一下),這頁面一般不會直接顯示給用戶(當然也可以拉),而后再由該站點設置一個稱為“重定向“的技術轉向http://localhost/ detail.htm頁面(也就是你點擊廣告后打開的頁面),IIS有設置重定向的功能.至于重定向,恰好我這有個經(jīng)常用的,提供給大家參考下
<html xmlns="<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個小時(而且只是簡單地敘述了原理和過程,因為我寫的那個實現(xiàn)過程比較長,又要考6級了,所以有時間才貼出來,其實只要學習過動態(tài)語言,知道了原理,編個計數(shù)器也不是很難事),明明知道的東西要表達清楚還真的不是很容易的事呀,原來寫教程真的是件比較辛苦的事呀.......
申明一下: 我不是職業(yè)的寫家(允許發(fā)表不同的意見,但是別說不雅的話,謝謝了)。 發(fā)表這樣的帖子也是由于我曾經(jīng)也有過這樣疑惑,也是看了那些許多熱心人的帖子(如寂寞火山,幫打個廣告,),學了很多東西,也對flash的后臺產生了興趣,才對FLASH產生興趣,才會去研究其它相關的動態(tài)語言,所以在論壇看到許多人提出這樣的疑惑,就用自己所掌握的,盡量為大家解析一下。這是我初次寫教程(費了不少的心血,也許是打字太慢吧,真的比較累哦),也許在高手眼中不是很專業(yè),但是我是很用心的。
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2849267-1-1.html
本文鏈接:http://www.95time.cn/tech/multimedia/2008/5715.asp
出處:藍色理想
責任編輯:bluehearts
◎進入論壇RIA設計與應用版塊參加討論
|