zoukankan      html  css  js  c++  java
  • flash新闻轮转:图片和链接从数据库读取之我见

    flash新闻轮转经常见到,为了维护的便捷性,我是如何解决该问题的呢?

    1、新闻页面我是利用javascript和aspx结合的如:假如页面中需要用到一个get_title变量,则它是如何从aspx中传递过来的呢?看看下:

    <title>
            <%=get_title()%>
         </title>

    在打开新闻页面中写个函数,要利用DataSet哦,accessGetDataSet则原来就写好的函数

    protected String get_title()  //新闻的标题
        {
            OleDbConnection Con = dbcen.Acc_Con();
            Con.Open();
            string title = dbcen.accessGetDataSet("select * from db_news where new_no = " + int.Parse(Request.QueryString["new_no"].ToString()) + "").Tables[0].Rows[0]["new_title"].ToString();  //如何获得标题可以在javascript中调用
            Conn.Close();
            return title;
        }

    刚才是热身,现在正式开始做新闻系统中的flash展示图片来了

    1:必须的文件pixviewer.swf就可以了,

    后来的代码

    <script type="text/javascript">
    <!--
     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="/pic/pixviewer.swf";
      //var pics= 'testimg/1.jpg|testimg/2.jpg'; 

    //var links='www.baidu.com|www.163.com';
     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>

    以上主要关键就是“//”两行被颜色行替换了,因为这里需要的是图片地址,不是流。所以必须把图片用流输出到页面,然后把显示图片的url给它。

    var pics='<%=get_pic()%>';
     var links='<%=get_address()%>'; 如何的来的呢?

     当然在首页就定义静态变量

    public static String[] news_pic = new string[20];
        public static String[] news_link = new string[20];

    然后在页面load事件中

    con.open();

    int news_link_count = dbcen.accessGetDataSet("select * from db_news where NewsType='链接新闻'").Tables[0].Rows.Count;//判断符合的记录数目
                    string sql_news_pic;
                    if (news_link_count >=5)
                    {
                        sql_news_pic = "select top 6 * from db_news where NewsType='链接新闻'order by new_no desc";
                    }
                    else
                    {
                        sql_news_pic = "select top " + news_link_count.ToString() + " * from db_news where NewsType='链接新闻'order by news_no desc";
                     }
                    for (int i = 1; i <= news_link_count ;i++ )
                    {
                        news_pic[i] = dbcen.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["news_pic"].ToString().Replace("\\", "/");//替换字符串以正确显示
                        news_link[i] = dbcen.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["newspic_link"].ToString() + dbcen.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["news_no"].ToString();//附值
                     }

     con.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);
        }

    以允许javascript调用。

    这样思路解决了,也就搞算好了。该过程中还用到一些小技巧如替换“\”换成“/”才可以正确显示图片,news_link[i] = dbcen.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["newspic_link"].ToString() + dbcen.accessGetDataSet(sql_news_pic).Tables[0].Rows[i-1]["news_no"].ToString();

    因为写入库的时候只能先写入链接地址的前端,后读取的时候再读出new_no再结合为一个实际的链接.

    经过测试,效果和速度比较理想,好好思考下,以后就有进步.

    如果想:页面上所有的链接都在新窗口打开则在代码中加入

    <head>
        <base target="_blank">
        </head>

        注意事项:< base >必须写在< head >标记里,但是这有时候又限制了一些功能的,如果在aspx中,你用gridview控件,你有一列是做超级连接的,则在代码中最好是这样

    <asp:HyperLinkField   DataNavigateUrlFields="list.aspx?id={0}"     Target="_blank"   DataNavigateUrlFormatString="id"   DataTextField="name"/>

    Target="_blank" 加入就ok啦.可以在新的窗口打开超连接了。

    如果还不明白,请看本页另一篇,详细介绍flash轮换图片展示的步骤了.

  • 相关阅读:
    函数式编程之Functional.js源码解析(一)
    libevent的bufferevent
    Luna
    线程池的实现
    如何排查字节对齐问题引起的程序诡异崩溃
    GCC编译之如何控制共享文件导出符号
    ubuntu禁用独显的问题
    protobuf的一些细节
    GCC编译之新老版本共存
    libevent的evbuffer之减少内存拷贝
  • 原文地址:https://www.cnblogs.com/pyman/p/1457873.html
Copyright © 2011-2022 走看看