November.18.2004
721 Viewed
本教程需要你懂得基础的JavaScript(其实只要看得懂就可以了)和Flash ActionScript。
第一部分:将Cookies读入Flash中
在一个html文件中将cookies读入Flash内部是非常简单的,Flash允许运用URL字符串的方式向Flash中传递变量,你所要做的只是将cookies从浏览器中读出,再传入flash电影的地址即可.
Step1:获取Cookie的信息
从浏览器中读取cookie你需要将以下的Javascript代码放置在页面中
< script language="JavaScript1.1" >
< !--
// Get Cookies script
cookString = "?"
// does the visitor have a cookie?
if(document.cookie != "") {
theCook = document.cookie.split("; ")
// add each part of the cookie to a string variable
for (i = 0; i < theCook.length; i ++) {
cookString += theCook[i] + "&"
}
}
// -- >
< /script >
这段脚本是察看访问者是否拥有cookie,然后创建一个字符串(cookString)保存所有的cookie信息。一旦信息保存完毕,你就可以用另一个脚本语言将其传入Flash文件了。
Step2:传递Cookie信息
这第二段Javascript脚本代码是用来将Flash电影嵌入网页且将信息传入页面中的Flash文件的。除了刚才我们建立的cookString变量外,这第二段代码中我们还用到了其他三组变量:flName, flColor, flHeight 和 flWidth。flName变量是用来表示Flash文件再服务器上的位置。flColor变量是指定Flash电影的背景颜色的,而flHeight和flWidth是分别指定你嵌入Flash电影的高度和长度的。
< script language="JavaScript1.1" >
< !--
// Name the variables
flName = "flookies-fx.swf"
flColor = "#99cc99"
flHeight = "300"
flWidth = "200"
// This portion of the script is a modified version of Colin Moock's
// flash cookie importer, query string version script.
// Slight modifications have been made to
// work with the get cookies script.
document.write('< OBJECT '
+ 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
+ ' codebase="http://active.macromedia.com/flash2/'
+ 'cabs/swflash.cab#version=4,0,0,0"'
+ ' ID="flash"'
+ ' WIDTH=' + flWidth
+ ' HEIGHT=' + flHeight + ' >'
+ '< PARAM NAME=movie VALUE="' + flName + cookString + '" >'
+ '< PARAM NAME=quality VALUE=high >'
+ '< PARAM NAME=bgcolor VALUE=' + flColor + ' >'
+ '< EMBED src="flookies.swf' + cookString + '"'
+ ' name="flash"'
+ ' quality=high bgcolor=' + flColor
+ ' WIDTH=' + flWidth
+ ' HEIGHT=' + flHeight
+ ' TYPE="application/x-shockwave-flash"'
+ ' PLUGINSPAGE="http://www.macromedia.com/shockwave/'
+ 'download/index.cgi?P1_Prod_Version=ShockwaveFlash" >'
+ '< /EMBED >< /OBJECT >'
)
// -- >
< /script >
以上的这段代码将所有cookie变量传入Flash电影。假如你的访问者有一条cookie为'myname=John Smith',那么你的Flash电影中将在根Level中存在一个名为myname的变量,它的值为Joho Smith。到这里我们已经将cookie信息传入的Flash电影中.
第二部分:从Flash中写Cookies
单独依靠Flash来写cookies是不可能的。在这里我们又一次用到了Javacript来设置你的cookies。一般在Flash中调用过程的方式都使用FS_command,但是它并不能很好的和所有浏览器保持协调。Flash专家在Bookmarklets这个设计中做了尝试, 利用Get URL命令来调用Javascript函数。写入cookie是比读取稍微复杂一些,不过紧跟下面的内容,你就可以做到。
Step1:准备Javascript过程
Javascript函数是一个迷你的程序,你可以在你需要的时候调用它们。我们将创建一个名叫"cookit"Javascript函数,用来操控由Flash传递出的变量。在以下这段代码代码中,我们将在 cookie中写入并驻留9个月。
< script language="JavaScript1.1" >
< !--
function cookit() {
exDate = new Date
exDate.setMonth(exDate.getMonth()+9)
// This function writes a cookie sting from your Flash file.
// to call this function, use the Get URL command and pass the
// two variables to the JavaScript.
for(i=0;i< cookit.arguments.length;i++) {
ckThing = cookit.arguments[i] + '=' + cookit.arguments[i+1]
i++
document.cookie = ckThing + '; expires=' + exDate.toGMTString()
}
// The command to call this function is on the button 'click to
// write cookie'. It uses the 'Get URL' command and passes
// cookie information in pairs. The first item in a pair is
// the cookie variable name, the second is the value for the
// variable.
}
// -- >
< /script >
Step2:在Flash中调用函数
当你需要由Flash中传出改变cookie的信息时,你需要传递一对变量。这对变量的其中一个就是cookie的变量名,另一个当然就是这个cookie变量的值。假如你想写入一个名为"myname"、值为"Joho Smith"的cookie,那你就要调用像这样调用cookit函数: cookit('myname','John Smith').
你每一次向cookie中写入需要的值时都必须成对的形式。同样,由于各种浏览器和平台对cookies有着不同的操控方式,最好是将你的所有的cookie值一次传递完。不过当你用cookit函数从Flash电影中添加变量时值可以每次添加一对值。(嘻嘻!当然着只是个例子而已,高手自然可以编出更好的函数^_^)。这里我们又会问了,那又如何在Flash中调用cookit函数呢?
你可能打算大量不同类型的信息放置在cookie中以备今后读取(假如你曾看过 'Bake Cookies for your Visitors with Flash' 你就会这么做了!)在这个教程的例子(fla)里,我们通过Flash向cookie中写入两个变量。其中一个文本框是作为tztName(名称)的输入处,另一个文本框作为txtComment(注解)的输入处。注意看"按此写入cookies"按钮的Action.它是这么写的:
Get URL ("JavaScript:cookit('txComment','" & /:txComment & "','txName','" & /:txName & "')")
注意这个URL的前面是用"JavaScript"引导的:他告诉浏览器就要执行Javascript函数了。接着你就可以调用cookit函数了,传递变量。这个Get URL命令调用cookit函数,将你想在访问者下一次访问是提取的信息写入了他的计算机中。假如你好有些迷糊,你可以研究一下源码Flash中的字符变量。
第三部分:"按此读取cookies"按钮
在这个教程所附的源码中你还能看见一个叫"按此读取cookies"的按钮,这个按钮用Get URL 调用了另一个Javascript小程序。
JavaScript:if(document.cookie.length< 1){alert('No cookie for this site.')}else{alert('Your Cookie is:'+document.cookie)}
这段JavaScript 打开了一个弹出式窗口列出你访问者所有的cookie信息,这是一个从Bookmarklets.com 的一个bookmarklet变化而来的。
英文原著参见http://www.virtual-fx.net/tutorials/html/flookies.html 第一版翻译,经验不足,欢迎指正 jiangmin@mayi.com halfapple@fm365.com