Loading...
前些日子用到 Flash 的 BlurFilter 滤镜, 用于加载的图片上, 本地测试没问题, 上传后发现对缓存后的图片失效(相当曲折的发现路程).
后经过一番探索找到解决办法:
最初代码:
PLAIN TEXT >>
ACTIONSCRIPT:
-
import flash.filters.BlurFilter;
-
var filter:BlurFilter = new BlurFilter(10,10,3);
-
var mc_loader:MovieClip = _root.createEmptyMovieClip("loader",1);
-
var mcld:MovieClipLoader = new MovieClipLoader();
-
mcld.loadClip(url, mc_loader);
-
// 无关代码略...
-
mc_loader.filters = new Array(filter);
修正代码:
PLAIN TEXT >>
ACTIONSCRIPT:
-
import flash.filters.BlurFilter;
-
var filter:BlurFilter = new BlurFilter(10,10,3);
-
var mc_loader:MovieClip = _root.createEmptyMovieClip("loader",1);
-
// 套了一层mc
-
var mc_loader_child:MovieClip = mc_loader.createEmptyMovieClip("loader",1);
-
var mcld:MovieClipLoader = new MovieClipLoader();
-
mcld.loadClip(url, mc_loader_child);
-
// 无关代码略...
-
mc_loader.filters = new Array(filter);
看样子滤镜还是加载到 MC 上比较稳妥 呼呼 -_-|||
说到 url, 可能首先会想到 Flash 的 _url 属性, 但这个属性只能返回 swf 文件地址, 无法返回调用它的页面地址;
而 javascript 可以通过 location.href 取得页面地址;
简单结合一下: 利用 ExternalInterface.call() 调用一个 javascript 匿名函数来返回, 效果不错
PLAIN TEXT >>
ACTIONSCRIPT:
-
import flash.external.*;
-
function get_url():String{
-
return String(ExternalInterface.call("function(){return location.href;}"));
-
}