转载请说明出处,否则定当追究!

/*
今天下午比较有空一点,完成了一个项目,因此写点东西.这是一个预加载的AS.目的就是加快FLASH网站的浏览速度.
需要提示的是:以下提到的XML可以根据自己的情况由后台动态生成也可以手工写.自己灵活把握.将会让你的网站飞跃一个台阶.
FLASH网站可以比普通网站拥有更快的浏览速度,基本不需要等待.
实际案例参考地址:[url]http://www2.xilinmen.com.cn/tt/flash/index.html[/url]
你会发现所有的栏目和内容产品图片的展示都很流畅(网络太慢的可能还是需要些微等待)

*/

//以下是源代码. preload.as
/*
声明:你可以使用此段代码,但请保留星号内所有信息
版本信息:1.1 作者:刘毅[道格瑞恩] 技术交流:QQ14238910 MSN:luckliuyi@163.com
更新内容:增加了对产品图片等网站内容的预加载,修正了下载过程中出现错误内容立即终止为跳过继续下载
制作日期:2007-6-30 以往版本信息:1.0
使用方法:
使用之前先手工制作一份下载内容的XML清单,也可以用后台生成XML,由此函数来调用.
并给出路径:
main_path="***.xml"//主要栏目
pre_content="***.xml"//其他详细内容
在AS 中插入此段代码,在下载栏目或者产品图片等资源时,用gl_load(target, box, loader:MovieClipLoader)函数.
开始执行后台加载:xml_load(load_xml, main_path);这个可以根据自己需要自己看情况放在你的代码里,一般是主框架下载完后.
函数参数说明:
{
target:要下载的目标
box:装载下载目标的容器电影剪辑
loader:用户自己使用的装载侦听器
}
例:
最开始加入
#include "preload.as"
main_path="***.xml"
pre_content="****.xml"
调用时加入
_btn.onPress=function(){
gl_load(path, showbox, preloader_all);
}
开始执行后台加载:xml_load(load_xml, main_path);
原理:利用浏览时的内存缓存和临时文件夹缓存,来达到预先下载的目的.
首先,M:swf被A:swf容器在下载完毕后,如果B:swf再次调用M,那么B将直接调用浏览缓存内的临时文件。
另外,当M下载到一半时,若终止M的加载,而加载另外一个N:swf,M已经被加载的部分并不会及时在内存中删除掉,而是会保留一段时间.
当N加载完毕后,继续返回调用M,则M将从已经加载完部分开始继续加载,而不是从0开始加载.

*/
//---------变量定义[所有全部不需要修改]------------------
System.useCodepage = true;
var load_xml:XML = new XML();
load_xml.ignoreWhite = true;
var depth:Number = 9999;
//加载器所在深度控制
var main_path:String = "";
// 主栏目下载的XML列表
var main_array:Array = new Array();
//主要栏目的信息储存信息
var main_count = 0;
//主要栏目的数目
var nowLoad = 1;
//当前下载的栏目
var loading_url = "";
//正在被下载的栏目的地址
var loading_st = false;
//栏目是否已经开始下载
_global.gl_url = "";
//用户正在下载的栏目路径
_global.gl_box;
//用户正用来下载的容器电影剪辑
var pre_content = "";
//网站内容下载清单XML路径
var pre_content_fst = true;
//---------变量定义end-----------------
//----------侦听器定义---------------------
var preld_check:Object = new Object();
preld_check.onLoadInit = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void  {
 nowLoad++;
 preloader.unloadClip(target);
 loading_st = false;
};
preld_check.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void  {
 target.show_loaded = bytesLoaded;
 target.show_allLoad = bytesTotal;
 target.stop();
 target._visible = false;
 eval("T"+nowLoad).text = target.show_loaded+"/"+target.show_allLoad;
};
preld_check.onLoadError = function() {
 nowLoad++;
 preloader.unloadClip(target);
 loading_st = false;
};
var preloader:MovieClipLoader = new MovieClipLoader();
preloader.addListener(preld_check);
//----------侦听器定义end---------------------
//---------函数定义------------------
function xml_load(target:XML, path:String) {
 //XML文件的下载函数
 init_num();
 //初始化
 target.load(path);
 checkProgress = function (xmlObj:XML) {
  //XML下载进度检测
  var bytesLoaded:Number = xmlObj.getBytesLoaded();
  var bytesTotal:Number = xmlObj.getBytesTotal();
  var percentLoaded:Number = Math.floor((bytesLoaded/bytesTotal)*100);
  //trace("milliseconds elapsed: "+getTimer());
  //trace("bytesLoaded: "+bytesLoaded);
  //trace("bytesTotal: "+bytesTotal);
  //trace("percent loaded: "+percentLoaded);
  //trace("---------------------------------");
 };
 target.onLoad = function(success:Boolean) {
  if (success) {
   clearInterval(intervalID);
   //switch (path) {
   //case main_path :
   mc_creat(target);
   //break;
   //}
  } else {
  }
 };
 var intervalID = setInterval(checkProgress, 50, target);
}
//end function
function box_creat(depth) {
 //下载器总容器生成
 var preload_mc = _root.createEmptyMovieClip("preload_mc", depth);
 preload_mc._y = -200;
 preload_mc._x = -200;
 preload_mc._xscale = preload_mc._yscale=10;
}
//end function
function mc_creat(target:XML) {
 //分容器生成
 main_count = target.firstChild.childNodes.length;
 for (i=1; i<=main_count; i++) {
  var short_xml = target.firstChild.childNodes[i-1].attributes;
  //preload_mc.createEmptyMovieClip("mc"+i, i);//用于多个同时下载模式
  main_array.push({id:i, myname:String(short_xml.name), myurl:short_xml.mc_url, loaded:false});
  if (i>=main_count) {
   checkloadID = setInterval(checkload, 100);
  }
 }
}
//end function
function checkload() {
 if (_global.gl_url != "") {
  preloader.unloadClip(preload_mc);
  loading_st = false;
  //--------------
  if (_global.gl_box.getBytesLoaded()/_global.gl_box.getBytesTotal()>=1) {
   //判断正在被装载的目标的装载进度,如果装载完就设置装载的容器暂时为空,装载的目标地址为空
   _global.gl_box = "";
   _global.gl_url = "";
  }
  //--------------                  
 } else {
  if (loading_st == false) {
   if (nowLoad>=main_count+1) {
    //如果已经下载完成的栏目大于或等于总的栏目数
    clearInterval(checkloadID);
    //清除预先加载监测动画
    if (pre_content != "" && pre_content_fst == true) {
     //如果还有网站内容需要下载
     pre_content_fst = false;
     xml_load(load_xml, pre_content);
    }
   } else {
    preloader.loadClip(main_array[Number(nowLoad-1)].myurl, preload_mc);
    trace(main_array[Number(nowLoad-1)].myurl);
    //卸载正在装载的目标
    loading_url = main_array[Number(nowLoad-1)].myurl;
    loading_st = true;
   }
  }
 }
 //end if
}
function gl_load(target, box, loader:MovieClipLoader) {
 //下载时通用的函数,这样的话方便用户自定义装载侦听器
 _global.gl_url = target;
 _global.gl_box = box;
 loader.loadClip(target, box);
}
function init_num() {
 nowLoad = 1;
 main_array.splice(0);
}
//***********************************预加载完**************************
box_creat(depth);

/*
XML格式:
<?xml version="1.0" encoding="gb2312"?>
<load_box name="网站整体结构加载清单" update="2007-6-12" author="dgs_liuyi">
<list name="关于我们" mc_url="brand.swf" />
<list name="产品中心" mc_url="product.swf" />
<list name="wallpaper" mc_url="wallpaper.swf" />
<list name="sale" mc_url="sale.swf" />
<list name="联系我们" mc_url="contact.swf" />
<list name="about" mc_url="about.swf" />
<list name="design" mc_url="design.swf" />
<list name="store" mc_url="store.swf" />
<list name="jpg" mc_url="1.jpg" />
<list name="jpg" mc_url="2.jpg" />
<list name="jpg" mc_url="3.jpg" />
</load_box>
*/

FLASH web 预加载技术(原创)相关推荐

  1. 转javascript图片预加载技术

    今天看一篇文章,再谈javascript图片预加载技术(http://www.planeart.cn/?p=1121) http://www.qiqiboy.com/2011/05/20/javasc ...

  2. 前端性能优化--预加载技术

    当我们谈到前端的性能时,总是会提到比如合并.压缩.缓存或者在服务器上开启gzip之类的,目的都是为了让页面加载的更快. 资源预拉取(prefetch)则是另一种性能优化的技术.通过预拉取可以告诉浏览器 ...

  3. 图片无序预加载技术一

    看视频记录一下. 预加载分为无序预加载和有序预加载. demo1.html <!DOCTYPE html> <html lang="en"> <hea ...

  4. 很山寨的网页游戏图片预加载技术

    很山寨的网页游戏图片预加载技术 以下一种简单易懂,方便易用的网页图片预加载技术.:=D. 这种预加载技术使用了javascript技术.静态页面技术.div隐藏技术.gif动态图片技术.bash脚本技 ...

  5. ios 微信浏览器 预加载_小程序页面预加载技术

    lightning-load-project 集成方式 看不效果览图的话,请看博客 https://blog.csdn.net/sinat_27612147/article/details/80802 ...

  6. 再谈javascript图片预加载经典技术

    图片预加载技术的典型应用: 如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展 ...

  7. php预加载图片,图片预加载的一个简明例子

    图片预加载技术的典型应用:如lightbox方式展现照片,无疑需要提前获得大图的尺寸,这样才能居中定位,由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小然后展示 ...

  8. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  9. 利用CSS、JavaScript及Ajax实现图片预加载的三大方法及优缺点分析

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

最新文章

  1. linux系统启动过程(一)
  2. 由浅入深之Jq选择器(2)
  3. Nginx实用指南V1 (连载之六:cacti监控)
  4. 文档容器iOS网络编程-iCloud文档存储编程实例
  5. jQuery LigerUI 插件介绍及使用之ligerGrid
  6. web driver selenium 操作滚动条
  7. CGContextRef:mask和layer绘图
  8. 新系统基础优化--Centos6.6
  9. ARTS Share6 miniUI getData(true,false)获取form表单数据问题
  10. Base64基本原理及简单应用
  11. 用html制作带阴影小球弹跳,AE怎么制作一个有影子的弹跳小球动画?
  12. 如何使用JGIT在远程仓库获取提交详情记录
  13. 解决:Establishing SSL connection without server‘s identity verification is not recommended警告
  14. 使用 JDBC 进行 MySQL 编程
  15. Cesium--模型(modle)的处理篇
  16. 服务器虚拟化双活,分布式双活数据中心部署模式
  17. 动态规划——钢条切割
  18. 跨境企业招聘信息怎么写才能吸引求职者?
  19. 有哪些适合大学生投稿的普刊(社科类)?
  20. html png图片不显示,IE打开网页时部分图片无法显示(PNG图片显示为叉叉)的解决办法...

热门文章

  1. STM32学习之PWM输出
  2. 动态规划系列——原理与思想
  3. power 见解_客户见解的两个简单来源,可改善用户体验
  4. 黑莓未死 出路在于保节操做精品/从贩卖祖屋到股价大涨黑莓回光返照?
  5. [PASECA2019]honey_shop
  6. java 向下转型运行时错误_Java向上转型和向下转型
  7. 三角形用代码实现,三角形实现原理。
  8. 计算机windows无法加载怎么办,win7开机提示由于系统注册表文件丢失或损坏因此无法加载怎么办...
  9. 找个程序员做老公,最靠谱!
  10. etc/hosts.allow和/etc/hosts.deny详解