在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
特别感谢网友 爱在戏院前,提醒可以用json的模式去把前头的字符拼出来,返回个字符串回去就可以了。 做幻灯片效果也的确是这样:要么就是用XML做数据源,要么就把从数据库中读取到的参数值传到FlashVar中,实现显示效果。 说明一下:我这里用到的是一个最常用的一种效果 截图: 文件: 一个前台显示的AD.SWF
Flash动画
逻辑层中的代码:
程序代码
/// <summary> /// 显示图片新闻列表 /// </summary> /// <param name="PageSize">每页纪录数</param> /// <param name="PageIndex"></param> /// <returns></returns> public IList<Model.NewsInfo> PicNewsList(int PageSize, int PageIndex) { SqlParameter[] parameters = { new SqlParameter("@tblName", SqlDbType.VarChar, 255), new SqlParameter("@strGetFields", SqlDbType.VarChar, 1000), new SqlParameter("@fldName", SqlDbType.VarChar, 255), new SqlParameter("@PageSize", SqlDbType.Int), new SqlParameter("@PageIndex", SqlDbType.Int), new SqlParameter("@doCount", SqlDbType.Bit), new SqlParameter("@OrderType", SqlDbType.Bit), new SqlParameter("@strWhere", SqlDbType.VarChar, 1500) }; parameters[0].Value = "Njsq_News"; parameters[1].Value = "*"; parameters[2].Value = "NewsID"; parameters[3].Value = PageSize; parameters[4].Value = PageIndex; parameters[5].Value = 0; parameters[6].Value = 1; parameters[7].Value = "NewsIndexPicPath IS NOT NULL"; try { IList<Model.NewsInfo> newsList = new List<Model.NewsInfo>(); Model.NewsInfo objNews = new NewsInfo(); using (SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringProfile, CommandType.StoredProcedure, "UP_GetCollectionPage", parameters)) { while (dr.Read()) { newsList.Add(Populater(dr)); } } return newsList; } catch (Exception e) { throw e; } } /// <summary> /// 返回UI层的幻灯片字符串 /// </summary> /// <returns></returns> public static string PicNews() { IList<Model.NewsInfo> list = new List<Model.NewsInfo>(); BLL.News bllNews = new News(); list = bllNews.PicNewsList(5, 1); //调用上面的Method() StringBuilder retStr = new StringBuilder(); StringBuilder retPics = new StringBuilder(); StringBuilder retTitle = new StringBuilder(); StringBuilder retLinks = new StringBuilder(); string pics = "NewsCoverPic/"; //定义图片的路径,我这里是写死了,你可以设置成一个变量 string title = string.Empty; //幻灯片中的新闻标题 string links = "News/NewsDetail.aspx?NID="; //幻灯片中的链接格式 for (int i = 0; i < list.Count; i++) //循环, { retPics.Append(pics).Append(list[i].NewsIndexPicPath.ToString()).Append("|"); //将图片路径获取后使用append()将图片路径串成一个字符串 retTitle.Append(list[i].NewsTitle).Append("|"); //将标题获取后使用append()串成一个字符串 retLinks.Append(links).Append(list[i].NewsID.ToString()).Append("|");//将链接格式及新闻参数ID获取后串成一个长字符串 } string retString="pics=" + retPics.ToString() + "&links=" + retLinks.ToString() + "&texts=" + retTitle.ToString() + "&borderwidth=340&borderheight=240&textheight=20"; //将retpics,rettitle,rettitle连成一个长字符串 retStr.Append(retString.ToString()); return retString.ToString(); //返回前台Flash所需的一个FlashVar的参数值 } 说明一下: 大家可以看到我这里有些参数值是写死了,比如一些borderwith borderheight之流的,因为考虑到这些在实际运用过程上变化的因素不是很大,如果确实有这个必要从前端UI进行设置的话,可以将其作为变量值传送。当然,如果要扩充整个功能:建议是将在前端Flash的参数,整成一个object的属性,直接传一个实体到后台就行了。 再来看看前台的:javascript 因为后台的类是static模式,所以我们在前台调用就很方便了. FlashVars="<%=BLL.News.PicNews() %>" 而我在前台页面的.cs(default.aspx.cs)中,没有添加任何代码 完整的javascript代码
程序代码
<script type="text/javascript"> document.write('<embed src="Flash/ad.swf" wmode="opaque" FlashVars="<%=BLL.News.PicNews() %>" menu="false" bgcolor="#DAF3CE" quality="high" width="340" height="260" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"/>'); </script> 这样就达到我们所需要的效果了,不过很奇怪的是这个只能接受jpg类型的图,算是一个bug吧. 除了FlashVars这个属性,像其它Menu bgColor width height 之类的,都可以作为参数传,怎么传就不用我来啰嗦了。 对比一下网上同行的实现模式: 附:CSDN上的一个源码程序(新浪新闻图片实现效果) 点击下载此文件 看了一下它实现的代码:
程序代码
public string flashUrl = "";
public string flashAdd = ""; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Flash(); } }
程序代码
private void Flash() { SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["con"]); con.Open(); SqlDataAdapter sda = new SqlDataAdapter("select * from flash order by createdate Desc ", con); DataSet ds = new DataSet(); sda.Fill(ds, "flash"); DataView dv = ds.Tables[0].DefaultView; if(dv.Table.Rows.Count != 0) { for (int i = 0; i < dv.Table.Rows.Count; i++) { flashAdd += dv.Table.Rows[i]["FlashHref"].ToString() + "|"; flashUrl += dv.Table.Rows[i]["FlashUrl"].ToString() + "|"; } flashAdd = flashAdd.Substring(0, flashAdd.LastIndexOf("|")); flashUrl = flashUrl.Substring(0, flashUrl.LastIndexOf("|")); } 个人认为,除非用在比较简单的一些小网站中,要不其实际运用是不提倡这样的方法的吧。这只是个人之见哈。本文来源:http://www.dezai.cn/blog/article.asp?id=211 一点小经验,与大家分享,欢迎多多指教, 再次感谢网友爱在戏院前。 |
请发表评论