因为需要,写一个flash播放新闻轮转的小程序,参考了网上一个例子,他是java做的,我是用c#,而且我的和他的思路有所不同1、声明需要文件:pixviewer.swf 就可以了(以备调用需要),厉害吧
2、html内静态代码:
<script type="text/javascript">
<!--
var interval_time=2;
var focus_width=160;
var focus_height=130;
var text_height=0;//设置为0所以看不到标题
var text_align="center";
var swf_height = focus_height+text_height;
var swfpath="http://www.xxx.cn/e/data/images/pixviewer.swf";
var swfpatha=http://www.xxx.cn/e/data/images/pixviewer.swf;
var pics="/d/file/news/ch/20090613/48154c81c1eee8a4ddeb95cd7bc34afd.jpg|/d/file/news/ch/20090610/301bc25969140ec1e4e0b26009922a17.jpg|/d/file/news/ch/20090602/smallfc537db511882dd89cadfc0771f99f0f.jpg|/d/file/news/ch/20090602/small1d06270b675077713a7760352104750b.jpg|/d/file/news/ch/20090529/c2129a49db54920d46f2390b41e096eb.jpg";
var links="http://www.52ch.cn/news/ch/20090613/4739.html|http://www.52ch.cn/news/ch/20090610/4738.html|http://www.52ch.cn/news/ch/20090602/4718.html|http://www.52ch.cn/news/ch/20090602/4717.html|http://www.52ch.cn/news/ch/20090529/4704.html";
var texts="||||";
document.write('<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="'+ focus_width +'" height="'+ swf_height +'">');
document.write('<param name="movie" value="'+swfpath+'"><param name="quality" value="high"><param name="bgcolor" value="#ffffff">');
document.write('<param name="menu" value="false"><param name=wmode value="opaque">');
document.write('<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'&text_align='+text_align+'&interval_time='+interval_time+'">');
document.write('<embed src="'+swfpath+'" wmode="opaque" FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'&text_align='+text_align+'&interval_time='+interval_time+'" menu="false" bgcolor="#ffffff" quality="high" width="'+ focus_width +'" height="'+ swf_height +'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
document.write('</object>');
//-->
</script>
//参数说明
interval_time 设置图片的停顿时间,单位为秒,为0则停止自动切换。
如果没有此参数,系统默认为5秒。
focus_width 幻灯片的宽度,单位为像素。
focus_height 幻灯片的高度,单位为像素。
text_height 标题文字的高度,单位为像素,为0则不显示标题文字。
text_align 标题文字的对齐方式(left、center、right)
如果没有此参数,系统默认为center。
注意:一定要有单引号,如'left'。
swf_height 影片高度,即幻灯片高度与标题高度之和。
相加之和最好是偶数,否则数字会模糊失真。
pics 图片地址,可以使用相对路径也可以使用绝对地址。
多个图片用竖线“|”分割,最多9个!
支持的文件格式为:.jpg、.gif、.png、.swf
links 图片对应的链接地址,可以使用相对路径也可以使用绝对地址。
多个链接地址用竖线“|”分割,最多9个!
链接中不能包含“&”符号,否则会出错。
texts 图片对应的标题文字,不能包含“&”符号,否则会出错。
多个标题文字用竖线“|”分割,最多9个!
3、修改后成为很好用的模块,代码如下,主要是红色更改部分
<!--
var interval_time=2;
var focus_width=160;
var focus_height=120;
var text_height=0;
var text_align="center";
var swf_height = focus_height+text_height;
//var swfpath="http://www.xxx.com/dir/pic/pixviewer.swf";//播放器目录,真正放到web上用
var swfpath="pic/pixviewer.swf"//本地调试时候用
var pics='<%=get_pic()%>';
var links='<%=get_address()%>';//注意一定要用单引号,否则不行
var texts="||";
document.write('<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="'+ focus_width +'" height="'+ swf_height +'">');
document.write('<param name="movie" value="'+swfpath+'"><param name="quality" value="high"><param name="bgcolor" value="#ffffff">');
document.write('<param name="menu" value="false"><param name=wmode value="opaque">');
document.write('<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'&text_align='+text_align+'&interval_time='+interval_time+'">');
document.write('<embed src="'+swfpath+'" wmode="opaque" FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'&text_align='+text_align+'&interval_time='+interval_time+'" menu="false" bgcolor="#ffffff" quality="high" width="'+ focus_width +'" height="'+ swf_height +'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
document.write('</object>');
//-->
</script>
4、在c#中过程是,定义全局变量,得到变量值,定义好返回函数,返回函数,ok
//定义数组变量
public static String[] news_pic = new string[20];
public static String[] news_link = new string[20];
protected void Page_Load(object sender, EventArgs e)
{
string sql = "select * from news where inf_type='ok_ok' order by news_no desc";
OleDbConnection Conn = cs.acce_Conn();
Conn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand(sql, Conn);
// OleDbDataReader reader;
// reader = cmd.ExecuteReader();
//reader.Close();
int news_link_count = cs.accessGetDataSet("select * from news where inf_type='ok_ok' and NewsType='链接'").Tables[0].Rows.Count;//判断符合的记录数目
string sql_news_pic;//判断要显示的图片数目,决定sql语句
if (news_link_count >=5)
{
sql_news_pic = "select top 6 * from news where inf_type='ok_ok' and NewsType='链接'order by news_no desc";
}
else
{
sql_news_pic = "select top " + news_link_count.ToString() + " * from news where inf_type='ok_ok' and NewsType='链接'order by news_no desc";
}
for (int i = 1; i <= news_link_count ;i++ )//得到数据库中的的值
{
news_pic[i] = cs.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["news_pic"].ToString().Replace("\\", "/");//替换字符串以正确显示
news_link[i] = cs.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["newspic_link"].ToString() + cs.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["news_no"].ToString();//附值
}
Conn.Close();
}
//返回函数
protected String get_address()//得到流,输出图片的连接
{
string str_address = news_link[1] + "|" + news_link[2] + "|" + news_link[3] + "|" + news_link[4] + "|" + news_link[5];//多个字段相加
return (str_address);
}
protected string get_pic()//得到流,输出图片地址
{
string str_pic = news_pic[1] + "|" + news_pic[2] + "|" + news_pic[3] + "|" + news_pic[4] +"|" + news_pic[5]; //多个字段相加
return(str_pic);
}
5、这样,就完美解决了从数据库中读取数据了,flash新闻图片达到效果啦。
090731发现,如果在该前提下,更改var texts="||"为 var texts="1|2|3|4|5",文字12345均不能显示(原来是text_height=0导致),惟有另想办法,刚发现网上另有一播放器(Bcastr 3.0 beta flash 通用的图片浏览器),刚好适合,拿了下来改名为pixviewer.swf,更改小小东西就可以了,可以说是目前的终极版本哦。哈哈,看代码
document.write('<param name="FlashVars" value="bcastr_file='+pics+'&bcastr_link='+links+'&bcastr_title='+texts+'&0xffffff|2|0xff6600|20|0xffffff|0xff6600|0x000033|3|2|1|_blank">');
document.write('<embed src="'+swfpath+'" wmode="opaque" FlashVars="bcastr_file='+pics+'&bcastr_links='+links+'&bcastr_title='+texts+'&menu="false" bgcolor="#ffffff" quality="high" width="'+ focus_width +'" height="'+ swf_height +'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
请注意,虽然改动地方少,但要注意:bcastr_link与bcastr_links的区别,我调试的时候可麻烦多了。呵呵
对于默认字符串配置 高级设置
默认参数字符串 0xffffff:文字颜色|2:文字位置|0xff6600:文字背景颜色|60:文字背景透明度|0xffffff:按键文字颜色|0xff6600:按键默认颜色|0x000033:按键当前颜色|8:自动播放时间(秒)|2:图片过渡效果|1:是否显示按钮|_blank:打开窗口
颜色都以0x开始16进制数字表示
文字颜色:题目文字的颜色
文字位置:0表示题目文字在顶端,1表示文字在底部,2表示文字在顶端
文字背景透明度:0-100值,0表示全部透明
按键文字颜色:按键数字颜色
按键默认颜色:按键默认的颜色
按键当前颜色:当前图片按键颜色
自动播放时间:单位是秒
图片过渡效果:0,表示亮度过渡,1表示透明度过渡,2表示模糊过渡,3表示运动模糊过渡
是否显示按钮:0,表示隐藏按键部分,更适合做广告挑轮换
影片自动播放参数:0表示不自动播放,1表示自动播放
影片连续播放参数:0表示不连续播放,1表示连续循环播
默认音量参数 :0-100 的数值,设置影片开始默认音量大小
控制栏位置参数 :0表示在影片上浮动显示,1表示在影片下方显示
控制栏显示参数 :0表示不显示;1表示一直显示;2表示鼠标悬停时显示;3表示开始不显示,鼠标悬停后显示
打开窗口:_blank表示新窗口打开。_self表示在当前窗口打开
而对于var texts="1a|2b|3c|4d|5e";字符串的获取,则参照var pics='<%=get_pic()%>'方法,经过多次的调试和测试,终于完成一个终极版,很是开心。程序,真的要不断改进,不断发现和思考,当然,还需要行动哦.
最后说明一下:参考java做法,它在javascript中做,理论上应该是比在.net页面中运行速度快,因为javascript在客户端运行,不过我没有做具体测试
<script language='javascript'>
linkarr = new Array();
picarr = new Array();
textarr = new Array();
var swf_width=318;
var swf_height=446;
var files = "";
var links = "";
var texts = "";
//这里设置调用标记
linkarr[1] = "/chms/250.html";
picarr[1] = "/uploads/allimg/090731/1140191960-0_lit.jpg";
textarr[1] = "桂峰酿豆腐";
linkarr[2] = "/chms/249.html";
picarr[2] = "/uploads/allimg/090731/1139343635-0_lit.jpg";
textarr[2] = "香叶乌鬃鹅";
linkarr[3] = "/chms/248.html";
picarr[3] = "/uploads/allimg/090731/113SAS3-0_lit.jpg";
textarr[3] = "流溪大鱼头";
linkarr[4] = "/chms/247.html";
picarr[4] = "/uploads/allimg/090731/112H5F35-0_lit.jpg";
textarr[4] = "吕田焖大肉";
linkarr[5] = "/chms/246.html";
picarr[5] = "/uploads/allimg/090731/1126104312-0_lit.jpg";
textarr[5] = "吕田腊味";
for(i=1;i<picarr.length;i++){
if(files=="") files = picarr[i];
else files += "|"+picarr[i];
}
for(i=1;i<linkarr.length;i++){
if(links=="") links = linkarr[i];
else links += "|"+linkarr[i];
}
for(i=1;i<textarr.length;i++){
if(texts=="") texts = textarr[i];
else texts += "|"+textarr[i];
}
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ swf_width +'" height="'+ swf_height +'">');
document.write('<param name="movie" value="/images/bcastr3.swf"><param name="quality" value="high">');
document.write('<param name="menu" value="false"><param name=wmode value="opaque">');
document.write('<param name="FlashVars" value="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_title='+texts+'">');
document.write('<embed src="/templets/images/bcastr3.swf" wmode="opaque" FlashVars="bcastr_file='+files+'&bcastr_link='+links+'&bcastr_title='+texts+'& menu="false" quality="high" width="'+ swf_width +'" height="'+ swf_height +'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'); document.write('</object>');
</script>