Flash 网页新闻浮动板的制作(XML应用)
EmilMatthew(EmilMatthew@126.com)
摘要:
我们经常可以看到一些网站上有一些用javascript写的新闻浮动板的效果。
我尝试用flash+xml做了一个新闻浮动板,基本实现了读取xml中的内容并在点击时有超链接效果。
Abstract:
Nowadays,we could see lots of floating-news board be implemented on the web, which always be coded under javascript .
I have tried to use flash with xml technology to implement a floating-news board, and achieve the goal which could parse
the data on the xml and have a redirect url effect while user click the news.
关键词:Xml,网页浮动板
Key Words:Xml,floating-news board
1) 设计阶段:
1.1 总体框架:
构想应该是比较简单的,就是如图一所示的程序流程图:
图1
1.2系统详细设计:
图2
由于在做这个程序的时候,我对Design Patterns所知甚少,所以,唯一想到的可以降低设计复杂度的方式就是用对象组合,也就是把相应的功能分配给相应的执行对象,再逐级下放。最后由底层类来执行相应的功能。
2)实现阶段:
在实现的时候还是会遇到一些困难的,我就把我遇到的主要问题以及解决的方式小结如下:
2.1防止乱码:
transXml.ignoreWhite=true;
System.useCodepage = true;
2.2htmlText:
听说Flash是支持CSS的,但支持度有限,尝试了一下一个让超链接变色的效果,失败了。
有热心的朋友也提供了方案,不过我试过了,也失败了.
至于颜色就直接用<font color='#0000FF'>来做就是了,如下:
private function htmlStrMake(info:String,href:String,textHolder:TextField):Void
{
var tmpStr:String="<font color='#0000FF'><a href='";
tmpStr+=href;
tmpStr+="' target='_blank'>";
tmpStr+=info+"</a></font>";
textHolder.htmlText=tmpStr;
}
2.3xml的onLoad事件:
也许是出于安全性的考虑,在我的尝试过程中,发现flash对读入的xml文件的存取相当的严格。能施展拳脚的空间基本上只有onLoad了。
一旦出了onLoad,那么在onLoad里所动态创建及获得的一切,不论是否与xml文件中的数据有关,都会变得无效.
所以,一开始的设计中,我是准备把xml文件的读取与后面的动态效果分离的。后来,经过了失败的阵痛后,我不得不把所有的主要程序全放在onLoad中,虽然肯定是不合理的,但我实在是没办法~~~~
2.4对于读入xml内容的处理:
读入的xml数据,一律是被当作String来处理的,所以,当读入的是数字的时候,应该用parseInt或parseFloat加以转型。
如果只是直接用,即不用它来做任何运算,还是没问题的。但我并不推荐这样做。
2.5对于使用的xml文件格式的说明.
首行的属性值存放了和这个影片有关的数据,对应介绍如下:
<newsMsg width='204' height='176' newsnum='5' rowinterval='2' fps='80' vy='0.5'>
width:影片的宽度。
height:影片的高度.
newsnum:新闻的数目.
rowinterval:每条新闻所占的行数,我这里的一行是22个像素单位.
fps:setInterval中的每帧的所消耗的毫秒数.
vy:新闻文本框向上移动的速度。
主要的内容的存放格式为:
<news>
<headline>欢迎使用google</headline>
<url>http://www.google.com</url>
</news>
2.6改进:
为了使一个NewsReader可以为多个网页所用,或者可以在一个网页中加载不同的新闻,可以采用网页向Flash中传递参数的方式来进行.
Flash中定义变量:
var address:String=xmlAddress;
Html文件在加载Flash的语句片段中:
<Object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase=….> <param name="allowScriptAccess" value="sameDomain" />
…
<param name="FlashVars" value="xmlAddress=xmlFiles/mainIndexNews.xml" />
<!—注意:上面的语句即设 定了Flash中变量xmlAddress的值,如有多个变量,用’&’间隔-->
…
<embed src=.../ >
</Object>
另外,在实现复用时,应注意:
a) xmlReader.swf文件应存放于网站的根目录下,这是由Flash播放器的安全约束所决定的.
b) 在标签的设定上,要在以下两处设定相同的引用资源(即swf文件)
<param name="movie" value="../../xmlNewsBoard.swf" />
<embed src="../../xmlNewsBoard.swf"
c) 而对于object中的id属性及embed中的name属性,在复用的情况下,不同的复用的名称不应重复.
d) 对于资源文件的命名及对资源文件的引用,大小写务必一致,由于服务器端多为linux,对大小写是严格区分的.
参考文献:
[1]Danger,《Flash ActionScript2.0字典(chm)》版,made by Danger,2004.
完成日:05/7/11
修改日:06/1/19
效果展示:
http://www.emilmatthew.zk.cn/EmilPapers/06_04ffBoard/sample.html
本文最佳浏览定位:
http://www.emilmatthew.zk.cn/EmilPapers/06_04ffBoard/index.htm
程序源码下载:
http://emilmatthew.51.net/EmilPapers/06_04ffBoard/code.rar
若直接点击无法下载,请将下载的超链接粘接至浏览器地址栏后按回车.若不出意外,此时应能下载.