flash新闻图片轮转————c#+数据库解决

因为需要,写一个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 class />');

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 class />');

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 class />'); document.write('</object>');

</script>