谈谈loadVariables,Flash读取外部变量 |
||
| 上面的范例一看就是个网页页头动画,动态效果挺多,但看不出有什么特别的技术含量。 但是,这个动画我并不是想告诉你其中的光晕如何做,遮罩线条如何实现,按钮效果如何制作,我是想说:动画中的文本并不是在Flash中制作的,它们全部由外部文件读入的! 也就是说,只要你修改了txt文件中的内容,动画中的文字或者链接地址全部更新! 喔,有点意思了!但再想一想,这有什么用啊,文字直接在Flash中制作不是更方便美观嘛! 这话没错,但我还得问你:想不想制作全Flash的网站?想不想让Flash与WEB服务器通讯?想不想让Flash与ASP、PHP程序连结起来?想!呵呵,跟我一样哦! 那么,从一条最基本、最重要的指令开始吧,那就是: loadVariablesNum 或许你经常看到的是“loadVariables”,作用一样也有点不一样,如果要将变量加载的目标是MC中,请使用 loadVariables() 而不是 loadVariablesNum()。 “loadVariablesNum”可以添加“级别”(level)参数,一旦你设置了“级别”,Flash自动转用loadVariablesNum。 loadVariables指令可以从服务器收集信息,它还可直接从外部文件(例如文本文件,或由 CGI 、ASP、PHP 或 Perl 脚本生成的文本中读取数据,也可在Flash中为动画片段设置变量,并可由CGI等程序向服务器端发送,再由loadVariables取得返回值。 它的语法结构是: loadVariables ("url" ,level [, variables]) 参数意义:url是载入变量处的地址(绝对或相对地址),level就是接受变量的层级或目,上面提到过,一旦指定了“层级”,该指令马上变成loadVariablesNum,最后那个参数为可选,其意义是为发送变量指定一个方法,这个参数的值是一个字符串: GET 或 POST。如果没有要发送的变量,则省略此参数。 下面举3个小例。 典型的asp文件读取: 假如有个hslk.asp文件,在asp的文件结尾处一般都有返回值如下: <% Re="aspReturn="&"老康蓝屋共有"&n&"个主栏目&aspReturn Response.Write(Re) %> 然后你就可以在Flash中用以下指令读取: loadVariables("hslk.asp","","GET"); 或者 loadVariables("hslk.asp","","post"); 那么,“get”和“post”参数到底有何不同呢? GET 方法将变量追加到 URL 的末尾,该方法用于发送少量变量。比如: http://www.hslk.com/flash.asp?uid=hslk&passwd=123456 POST 方法用于发送长的变量字符串,以及诸如从表单获取的批量数据。如: uid=hslk.form("uid") passwd=hslk.form("passwd") name=hslk.form("name") tel=hslk.form("tel") addr=hslk.form("addr") |
||
| 好了,不多说了,越说你可能越糊涂,还是说说这个实例吧,一个必需要说的重要问题是:指定载入的文本文件必须用标准的 “MIME格式”书写,这是一种 CGI 脚本使用的标准格式。 下面分析一下页头动画的loadVariables原理,可以加深你对上述阐述的理解。 在本例提供的压缩包内有4个文件(见后面下载及说明),其中hslk.txt就是用“MIME”格式书写的,内容如左: |
![]() |
|
| 从中我们可以看出所谓mime格式很简单:变量名=属性,再用“&”连接下一条变量,你可以输入任意多的变量。 本例中,name就是动画中间的大字,hslk是动画中下部的黄色小字,接下来是6个按钮文字,最后是按钮链接的地址,为了方便,我用了1个测试页:tim.htm,喔,按一下试试,这个测试页还挺有趣哩。 再看看loadv.fla文件,在场景第一帧,有如下一条指令: loadVariablesNum("hslk.txt", 0); 该指令就是把hslk.txt中的所有变量载入到“level0”中,也就是“0层级”! 如何使用这些变量,就更简单了,你可能已经想到应该采取的方法:用“动态文本”,没错!分别用多个动态文本对象接受各变量,而且动态文本的变量名必需与hslk.txt中的变量名一致! 由于装入的变量在动画层次的主场景中(_root),而我们的动态文本对象可能在MC中,也可能在按钮中,一个相当便捷的做法是所有动态文本的“变量”名前全加上“/:”或者“_root.”。 比如你在本例中看到的“/:name”、“/:hslk”、“/:button1”以及按钮指令中的“/:url1”等等。 哇,这么简单?! OK,Flash与外部数据通讯确实不复杂,只要你学会用asp、php等网络编程语言并返回mime格式的数据,你就能制作Flash留言板、购物、图书馆等等动画网站了!当然这一揽子过程要解决的技术难题还相当多,我们至少推开了一道“门缝”,窥见到了动画世界的另一丝精彩。 最后还得说明一点,你下载的压缩包中有4个文件,loadv.fla是源文件,tim.htm是按钮点击后的测试文件,hslk.txt是动画所用的数据文件,而那个hslk_uni.txt文件与hslk.txt内容一样,但它是Unidoce编码,windows9x的朋友可以用word转换,而windows2000以上的朋友可以直接用“记事本”书写,并保存为Unidoce编码格式即可。 提供这个文件,是让你测试一下我上次说的编码中的“代码页”问题。 在我的源文件的第1帧中,使用了一条指令: System.useCodePage = true; 它的意思是使用“传统代码页”! 试把该指令取走,动画将出现“乱码”甚至无文字!而这时你改用hslk_uni.txt就能正常了! 加上该指令,就能使用普通的ANSI文本文件:hslk.txt了!否则,全是乱码! 有些朋友说了,loadVariables我早就用过,怎么没这规矩?是的,新版Flash在编码问题上强化了,详细内容见: http://www.hslk.com/lx/unicode1.htm 源文件及压缩包下载: http://www.hslk.com/lx/flashmx/loadv.rar |
||