as3开发中加载跨域资源没经验的话是个让人很捉急的事情,加班了三天总结了以下几点:
第一:在本地加载跨域文件和在服务器上加载跨域文件情况不一样,具体差别在于一句话,但是这句话费了一晚上才找出来。如下:
var lc:LoaderContext = new LoaderContext(true); 就是这句话,及其重要。
var loader:Loader = new Loader();
第一:在本地加载跨域文件和在服务器上加载跨域文件情况不一样,具体差别在于一句话,但是这句话费了一晚上才找出来。如下:
var lc:LoaderContext = new LoaderContext(true); 就是这句话,及其重要。
var request:URLRequest = new URLRequest(url);
loader.load(request, lc);
因为flash开发是开发好swf然后给后台人员嵌入网页的,在本地的时候没第一句话也无所谓,能加载跨域资源,但是嵌入网页放入服务器之后就不行了,而且不会提示什么错误,这样flash开发人员不知道的话以为是后台的错误,后台人员则以为是flash开发没做好,很容易起纠纷,而且非常蛋疼的事情是,用火狐浏览器调试看,里面是请求了资源,而且拿到了图片,你在swf中打印调试信息会发现progress也加载到一百,就是卡在把资源展现出来的地方。
第二:同样是跨域加载资源,在 同一个项目里面的,加载资源,代码和第一次加载资源一模一样,但是无论是打印调试信息还是在火狐上调试 和第一种一模一样,经过了试验了N中加载图片的方式还是不行之后就把重点放在权限上了,为什么第一次的跨域资源修改之后就能拿到呢,原因是加载到那个资源根目录下的crossdomain文件,第二次呢,在火狐上调试一看也能加载到crossdmain文件,这就奇怪了,代码一样,权限文件能取到,为什么还不能呢?y一晚上就过去了,第二天早上一切从0开始调试,突然发现跨域加载的权限文件时后台人员做了一次跳转,跳转到别的目录去取那个crossdomain文件,之前只看权限文件的内容没看地址,这时候看到了火狐浏览器的提示该文件是301状态,发现了属于跳转获取的,灵光一闪赶紧查资料,说是flash10之后 ,权限文件必须得放在资源的根目录之下,这种跳转获取不行。总算雨过天晴啊。
因为flash开发是开发好swf然后给后台人员嵌入网页的,在本地的时候没第一句话也无所谓,能加载跨域资源,但是嵌入网页放入服务器之后就不行了,而且不会提示什么错误,这样flash开发人员不知道的话以为是后台的错误,后台人员则以为是flash开发没做好,很容易起纠纷,而且非常蛋疼的事情是,用火狐浏览器调试看,里面是请求了资源,而且拿到了图片,你在swf中打印调试信息会发现progress也加载到一百,就是卡在把资源展现出来的地方。
第二:同样是跨域加载资源,在 同一个项目里面的,加载资源,代码和第一次加载资源一模一样,但是无论是打印调试信息还是在火狐上调试 和第一种一模一样,经过了试验了N中加载图片的方式还是不行之后就把重点放在权限上了,为什么第一次的跨域资源修改之后就能拿到呢,原因是加载到那个资源根目录下的crossdomain文件,第二次呢,在火狐上调试一看也能加载到crossdmain文件,这就奇怪了,代码一样,权限文件能取到,为什么还不能呢?y一晚上就过去了,第二天早上一切从0开始调试,突然发现跨域加载的权限文件时后台人员做了一次跳转,跳转到别的目录去取那个crossdomain文件,之前只看权限文件的内容没看地址,这时候看到了火狐浏览器的提示该文件是301状态,发现了属于跳转获取的,灵光一闪赶紧查资料,说是flash10之后 ,权限文件必须得放在资源的根目录之下,这种跳转获取不行。总算雨过天晴啊。