收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 2486|回复: 10

[AS3] as3 URLLoader 问题

[复制链接]
发表于 2009-7-15 16:36:49 | 显示全部楼层 |阅读模式

  1. var xml:XML;
  2. var xmlList:XMLList;
  3. var xmlLoader:URLLoader = new URLLoader();
  4. xmlLoader.load(new URLRequest("data/images.xml"));

  5. xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

  6. function xmlLoaded(event:Event):void {
  7.         xml = XML(event.target.data);
  8.         xmlList = xml.children();
  9.         trace(xmlList.length());
  10.         aaa.removeEventListener(Event.ENTER_FRAME , checkfun);
  11. }

  12. var aaa:Sprite=new Sprite();
  13. aaa.addEventListener(Event.ENTER_FRAME , checkfun);
  14. function checkfun(e:Event) {
  15.         trace(xmlLoader.bytesLoaded);
  16.         trace(xmlLoader.bytesTotal);
  17. }
复制代码


输出结果是

  1. 0
  2. 0
  3. 4
复制代码


当我注掉这一句:aaa.removeEventListener(Event.ENTER_FRAME , checkfun);
输出结果是

  1. 0
  2. 0
  3. 4
  4. 411
  5. 411
  6. 411
  7. 411
复制代码


为什么只有在COMPLETE事件之后可以检测到bytesLoaded,之前却全是零呢。还是那里有错,有无办法在COMPLETE事件之前得到bytesLoaded

thx
发表于 2009-7-15 17:17:42 | 显示全部楼层
有这个事件:ProgressEvent.PROGRESS
回复 支持 反对

使用道具 举报

发表于 2009-7-15 17:18:53 | 显示全部楼层
本地测试加载速度太快,放远程服务器试试

检测加载可以侦听ProgressEvent.PROGRESS事件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-15 17:38:15 | 显示全部楼层
ProgressEvent.PROGRESS这个知道了。

但是用enterframe应该也能检测到吧?

因为原来的应用是用的这种方式。用PROGRESS会有一些问题。

同样一种方式,用Loader的效果就不一样了。能得到值。

  1. import flash.display.Loader;
  2. var xml:XML;
  3. var xmlList:XMLList;
  4. var xmlLoader:Loader = new Loader();
  5. xmlLoader.load(new URLRequest("data/aaa.jpg"));

  6. xmlLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, xmlLoaded);

  7. function xmlLoaded(event:Event):void {
  8.         //xml = XML(event.target.data);
  9.         trace("complete");
  10.         //xmlList = xml.children();
  11.         //trace(xmlList.length());
  12.         aaa.removeEventListener(Event.ENTER_FRAME , checkfun);
  13. }

  14. var aaa:Sprite=new Sprite();
  15. aaa.addEventListener(Event.ENTER_FRAME , checkfun);
  16. function checkfun(e:Event) {
  17.         trace(xmlLoader.contentLoaderInfo.bytesLoaded);
  18.         trace(xmlLoader.contentLoaderInfo.bytesTotal);
  19. }
复制代码


最终结果是:

  1. 0
  2. 0
  3. 40759
  4. 40759
  5. complete
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-7-15 17:45:30 | 显示全部楼层

回复 4# wolf2999 [楼主] 的帖子

本地测试加载速度太快,放远程服务器试试

检测加载可以侦听ProgressEvent.PROGRESS事件

xxwei 说的很有道理!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-15 17:52:36 | 显示全部楼层
考虑过xxwei的说,我改了文件大小的。
data/images.xml  46k

data/aaa.jpg  40k

情况依旧。
回复 支持 反对

使用道具 举报

发表于 2009-7-15 17:55:04 | 显示全部楼层

回复 6# wolf2999 [楼主] 的帖子

因为是在本地。就是 1M 差不多也会是这个样子。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-15 17:58:46 | 显示全部楼层
OK...只能上传到空间试下了。

thx各位。
回复 支持 反对

使用道具 举报

发表于 2009-7-15 23:48:19 | 显示全部楼层
测试影片后可以使用模拟下载
回复 支持 反对

使用道具 举报

发表于 2009-7-15 23:58:19 | 显示全部楼层
本地也能模拟下载的,发布后,再设置带宽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 12:54:49 | 显示全部楼层
URLLoader和Loader有点区别。

多个Loader是一起下载。多个URLLoader是一个一个来。。。。。

所以检测的时候不同了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-9-19 01:54 , Processed in 0.125660 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表